Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.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
有人能解释一下如何使用iPhone吗?_Iphone_Opengl Es_Textures_Vertices_Normals - Fatal编程技术网

有人能解释一下如何使用iPhone吗?

有人能解释一下如何使用iPhone吗?,iphone,opengl-es,textures,vertices,normals,Iphone,Opengl Es,Textures,Vertices,Normals,对不起,我一直在胡闹几个小时都没有结果 我从转换器导出了一个简单立方体的(优化)数据: // 8 Verticies // 4 Texture Coordinates // 6 Normals // 12 Triangles static GLshort cubeFace_indicies[12][9] = { // Box001 {2,0,3 ,0,0,0 ,0,1,2 }, {1,3,0 ,0,0,0 ,3,2,1 }, {5,4,7 ,1,1,1 ,1,3,0 },

对不起,我一直在胡闹几个小时都没有结果

我从转换器导出了一个简单立方体的(优化)数据:

// 8 Verticies
// 4 Texture Coordinates
// 6 Normals
// 12 Triangles

static GLshort cubeFace_indicies[12][9] = {
    // Box001
    {2,0,3 ,0,0,0 ,0,1,2 }, {1,3,0 ,0,0,0 ,3,2,1 }, {5,4,7 ,1,1,1 ,1,3,0 },
    {6,7,4 ,1,1,1 ,2,0,3 }, {1,0,5 ,2,2,2 ,1,3,0 }, {4,5,0 ,2,2,2 ,2,0,3 },
    {3,1,7 ,3,3,3 ,1,3,0 }, {5,7,1 ,3,3,3 ,2,0,3 }, {2,3,6 ,4,4,4 ,1,3,0 },
    {7,6,3 ,4,4,4 ,2,0,3 }, {0,2,4 ,5,5,5 ,1,3,0 }, {6,4,2 ,5,5,5 ,2,0,3 }
};
static GLfloat cubeVertices [8][3] = {
    {-100.0f,-100.0f,-100.0f},{100.0f,-100.0f,-100.0f},{-100.0f,100.0f,-100.0f},
    {100.0f,100.0f,-100.0f},{-100.0f,-100.0f,100.0f},{100.0f,-100.0f,100.0f},
    {-100.0f,100.0f,100.0f},{100.0f,100.0f,100.0f}
};
static GLfloat cubeNormals [6][3] = {
    {0.0f,0.0f,1.0f},{0.0f,0.0f,-1.0f},{0.0f,1.0f,0.0f},
    {-1.0f,0.0f,0.0f},{0.0f,-1.0f,0.0f},{1.0f,0.0f,0.0f}
};
static GLfloat cubeTextures [4][2] = {
    {1.0f,2.0f},{1.0f,1.0f},{0.0f,2.0f},
    {0.0f,1.0f}
};
我设置了一个纹理,我想在屏幕上看到一些东西。我最近的绘图代码如下:

glTexCoordPointer(2, GL_FLOAT, 0, cubeTextures);
glVertexPointer(3, GL_FLOAT, 0, cubeVertices);
glNormalPointer(GL_FLOAT, 0, cubeNormals);
glBindTexture(GL_TEXTURE_2D, textures[0]);

    glDrawElements(GL_TRIANGLES , 12, GL_SHORT, cubeFace_indicies);

要使用glDrawArrays,您必须使用glEnableClientState(GL_VERTEX_数组)启用GL_VERTEX_数组状态,然后使用GlVertexPoint(3,GL_FLOAT,0,)创建每个顶点。

OpenGL ES(和常规OpenGL)中的索引数据与您使用它的方式不同。不是为位置、法线和纹理坐标提供每个顶点的单独索引,而是提供单个索引i,OpenGL ES从每个启用的顶点数组中获取元素i。这意味着您需要为在当前表示中创建的所有顶点法线texcoord组合创建单独的索引,这可能需要稍微复制数据


如果可以使用平面着色绘制模型(即在绘制之前调用
glShadeModel(GL\u flat)
),则可以不指定较少的唯一点。在这种情况下,三角形中最后一个顶点的法线将用于整个三角形。当然,这需要对索引进行仔细排序。

当然,这是行不通的。您进行了哪些glEnable()调用?glEnable(GL\U TEXTURE\U 2D);glEnable(GL_混合物);glEnable(GLU深度试验);是的,当然还有必要的glEnableClientState函数。我打错了标题。问题是关于元素的,现在我已经更新了。谢谢你澄清。但如果这是真的,那么为什么3D Exploring会像这样导出阵列呢?只是不能理解。不管怎样,PolyTrans以您描述的方式导出,它当然工作得很好。