HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 如何将glDrawElements与GL_UNSIGNED_INT一起用于索引?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_489_2@
我正在尝试在iPad上绘制超过65536个顶点的3d对象,但无法弄清楚我做错了什么.我使用GL_UNSIGNED_SHORT的原始模型运行得很好,但现在使用GL_UNSIGNED_INT,我无法使用glDrawElements命令显示任何内容.这就像渲染器完全忽略了我的glDrawElements线.我正在引用的渲染循环部分如下:

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);

glVertexPointer(3,GL_FLOAT,sizeof(assemblyObj->vertices[0])*6,&assemblyObj->vertices[0]);
glNormalPointer(GL_FLOAT,&assemblyObj->vertices[0]);

for (int i = 0; i < assemblyObj->numObjects; i++)
{
     glDrawElements(GL_TRIANGLES,assemblyObj->partList[i].faceArray.size(),GL_UNSIGNED_INT,&assemblyObj->partList[i].faceArray[0]);
}

glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);@H_489_8@ 
 

顶点定义为:

vector<float> vertices;@H_489_8@ 
 

每个faceArray定义为:

vector<UInt32> faceArray;@H_489_8@ 
 

关于我做错了什么的任何建议都阻止了我的几何图形的绘制?

@H_489_2@

解决方法

股票OpenGL ES不支持GL_UNSIGNED_INT索引.

GLES glDrawElements man page

支持GL_OES_element_index_uint时,将放宽此限制.

如果您在目标平台上没有支持,最好的办法是将网格划分为多个子网格,并使用<每个64K指数. 至于ipad,据我所知,iOS does not support this extension(参见支持的扩展名),但如果你想确定,你可以在实际设备上验证扩展名列表.

@H_489_2@ @H_489_2@
@H_489_2@
@H_489_2@

大佬总结

以上是大佬教程为你收集整理的objective-c – 如何将glDrawElements与GL_UNSIGNED_INT一起用于索引?全部内容,希望文章能够帮你解决objective-c – 如何将glDrawElements与GL_UNSIGNED_INT一起用于索引?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。