我很好奇glDrawElements如何使用它的索引。假设我有GL_TRIANGLES绘制的索引数组{1,2,3,4,5,6}。我的问题是,它是否通过索引“123”,“456”或4个三角形“123”,“234”,“345”,“456”形成2个三角形。我正在导入.obj模型,数据按照它们应该加载,但渲染只是搞砸了。
答案 0 :(得分:4)
如果您使用GL_TRIANGLES
,则会123, 456
。如果您使用GL_TRIANGLE_STRIPS
,则会123, 234, 345, 456
。
答案 1 :(得分:4)
在GL_TRIANGLES
模式下,每个三角形需要3个顶点,因此它一次会拉3个索引(因此,它会绘制两个三角形,其索引为1,2,3和4,5,6 )。
当然,如果您有邻接或绘制三角形 strip ,则会有不同的数字。
此外,由于您提到要导入OBJ文件,请注意OBJ文件中的顶点和纹理坐标和/或法线上可能有不同的索引。
这不是一个错误,而是一个功能。这在OBJ中是允许的,并且许多出口商在表面用光滑阴影(即两个面共用法线)时这样做以节省空间。
您必须构建一个唯一顶点列表,每个顶点都有自己的法线,texcoord等,并使用这些顶点的索引。