到目前为止,我尝试使用顶点缓冲区和索引缓冲区渲染网格物体。
使用带数据顺序的打包缓冲区:PosX,PosY,PosZ,NormX,NormY,NormZ,TexX,TexY
但是当谈到渲染像三角形或平面这样的低多边形模型时,渲染和立方体渲染并不奇怪(三角形变形并从各个点绘制:D)。
我认为问题在于GLES正在以糟糕的STRIDE移动。我仔细检查了进入vbo和ibo的数据顺序。
STRIDE = 8;
POSITION_DATA_SIZE = 3;
BYTES_PER_FLOAT = 4;
BYTES_PER_SHORT = 2;
elementsCount = 6; // When drawing plane
if (vbos[0] > 0 && ibos[0] > 0) {
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, vbos[0]);
vbo.position(0);
ibo.position(0);
// Bind Attributes
GLES20.glVertexAttribPointer(getParamHandle("a_Position"),
// Position data and offset in one stride
BufferData.POSITION_DATA_SIZE, GLES20.GL_FLOAT, false,
BufferData.STRIDE, 0);
GLES20.glEnableVertexAttribArray(getParamHandle("a_Position"));
// Draw
GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, ibos[0]);
GLES20.glDrawElements(GLES20.GL_TRIANGLE_STRIP, elementsCount,
GLES20.GL_UNSIGNED_SHORT, 0);
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, 0);
GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, 0);
}