iOS:OpenGL ES2不正确的顶点渲染顺序
我在iPhone上用OpenGL ES2渲染一个3D对象,模型是从.obj文件加载的。之前,渲染引擎是在ES1中实现的,我使用的是相同的结构、相同的元素缓冲区,一切正常iOS:OpenGL ES2不正确的顶点渲染顺序,ios,opengl-es-2.0,render,vertex,Ios,Opengl Es 2.0,Render,Vertex,我在iPhone上用OpenGL ES2渲染一个3D对象,模型是从.obj文件加载的。之前,渲染引擎是在ES1中实现的,我使用的是相同的结构、相同的元素缓冲区,一切正常 现在我想迁移到ES2,但是当我绘制模型时,似乎顶点是以不同的顺序绘制的,但是数组缓冲区和元素数组缓冲区是相同的 这是我的顶点结构: struct Vertex { union { struct { float x, y, z; }; float position[3]; }; union { struct { f
现在我想迁移到ES2,但是当我绘制模型时,似乎顶点是以不同的顺序绘制的,但是数组缓冲区和元素数组缓冲区是相同的
这是我的顶点结构:
struct Vertex
{
union { struct { float x, y, z; }; float position[3]; };
union { struct { float nx, ny, nz; }; float normal[3]; };
union { struct { float u, v; }; float uv0[2]; };
};
我的顶点着色器是正确的,因为我渲染了一个立方体,一切都很好以下是使用ES2渲染的结果屏幕截图:
它总是这样(从一帧到另一帧,从一个到另一个,从一个到另一个,从一个到另一个,从一个到另一个,从一个到另一个,从一个到另一个,从一个到另一个,从一个到另一个,从一个到另一个到另一个,从一个到另一个到另一个)吗?或者顶点。否则,顶点数据会出错。您可以发布设置顶点属性的代码(
glvertexattributepointer
)?我使用与ES1相同的顶点和索引缓冲区。下面是代码:glBindBuffer(GL_数组_BUFFER,(*glBuffers).first);glBindBuffer(GL_元素数组缓冲区,(*glBuffers).second);GLVertexAttributePointer(位置槽3,GL浮点数,GL假点数,sizeof(几何体::顶点),0);GLsizei model_size=model->resource_manager()->zero_model()->getindex().size();GLD元素(GLU三角形,模型大小,GLU无符号字节,0);您是否将glGetAttriblLocation
的结果用于positionSlot
?一个常见的错误(即我犯的错误)是使用与传递给glGetActiveAttrib
的值相同的值。