Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:OpenGL ES2不正确的顶点渲染顺序_Ios_Opengl Es 2.0_Render_Vertex - Fatal编程技术网

iOS:OpenGL ES2不正确的顶点渲染顺序

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

我在iPhone上用OpenGL ES2渲染一个3D对象,模型是从.obj文件加载的。之前,渲染引擎是在ES1中实现的,我使用的是相同的结构、相同的元素缓冲区,一切正常
现在我想迁移到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
的值相同的值。