You don't have to worry about alignment in your case. You have a buffer that you use as an array of 32-bit floats (as specified by the `glVertexAttribPointer` calls) and both your position and normal data is already properly aligned at `float` boundaries (given that *GL*'s `GL_FLOAT` type has the same size and alignment as *C++*'s `float` type, which is virtually always the case). So your errors are caused by something else.