gpt4 book ai didi

iphone - 有人可以解释一下如何使用 glDrawElements (iPhone) 吗?

转载 作者:行者123 更新时间:2023-12-03 19:12:39 26 4
gpt4 key购买 nike

抱歉重复了,但我已经在谷歌上搜索了几个小时,但没有任何结果。

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

// 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);

最佳答案

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

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

关于iphone - 有人可以解释一下如何使用 glDrawElements (iPhone) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3125876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com