项目差不多了,有空了重新看看OPENGL,呵呵,感觉以前太虚了,好多基础的都没有看
昨天在自己的例子中用了一个函数:glDrawElements
似乎很简单:
glDrawElements( GL_TRIANGLES,iFaceCount,GL_UNSIGNED_SHORT,(GLvoid*)paryiFaces );
iFaceCount : 三角形面的数量
paryiFaces : 三角形索引数组
结果不对啊,今天找了很多资料,都含糊,不清楚。
在CSDN上也找到了一文章:
http://blog.csdn.net/zhucde/archive/2008/12/18/3547442.aspx
这BLOGER说,第二个参数是 顶点的数量 ?!
更晕了 ~~~
倒杯水,喝点绿茶
想了一下:
我把组建三角形的索引数组传入后,它怎么知道有多少这个数组长度为多少呢?
只有 另一个参数(即,第二个参数)才能做这个事情了。
于是改成:
glDrawElements( GL_TRIANGLES,iFaceCount * 3 ,GL_UNSIGNED_SHORT,(GLvoid*)paryiFaces );
成功!!! 如预计中的效果出现了 :)
为了方便大家更好的理解,我做了个例子:
//四个顶点 float pfVer[] = { 0.0f, 0.0f, 0.0f,/ 100.0f, 0.0f, 0.0f,/ 100.0f, 100.0f, 0.0f,/ 0.0f, 100.0f, 0.0f }; //两个面 short piInd[] = { 0,1,2,/ 2,3,0 }; glVertexPointer( 3,GL_FLOAT, 0, pfVer ); glDrawElements( GL_TRIANGLES,2*3,GL_UNSIGNED_SHORT,(GLvoid*)piInd );
希望对大家有用:)