objective-c – OpenGL,glDrawArrays和IOS,Bad Access?

objective-c – OpenGL,glDrawArrays和IOS,Bad Access?,第1张

概述我开始在iOS中使用OpenGL.我总是学习使用glBegin()和glEnd()在OpenGL中绘制东西,所以这对我来说是一种新的东西. 我想画一个简单的三角形.我可以很好地绘制一个白色三角形,我甚至可以使用glColor绘制一个完整的彩色三角形.但每当我尝试使用下面的代码为每个顶点分配颜色时,我在绘制数组时会得到一个EXC_BAD_ACCESS.我正在使用iOS 4.3模拟器.我究竟做错了什么 我开始在iOS中使用OpenGL.我总是学习使用glBegin()和glEnd()在OpenGL中绘制东西,所以这对我来说是一种新的东西.

我想画一个简单的三角形.我可以很好地绘制一个白色三角形,我甚至可以使用glcolor绘制一个完整的彩色三角形.但每当我尝试使用下面的代码为每个顶点分配颜色时,我在绘制数组时会得到一个EXC_BAD_ACCESS.我正在使用iOS 4.3模拟器.我究竟做错了什么?

- (voID) render:(CAdisplaylink*)displaylink {    glClearcolor(0,104.0/255.0,55.0/255.0,1.0);    glClear(GL_color_BUFFER_BIT);    glMatrixMode(GL_MODELVIEW);    glLoadIDentity();    GLfloat vertices [] = {0,100,0};    GLfloat colours [] = {1.0,1.0,1.0};    glEnableClIEntState(GL_VERTEX_ARRAY);    glEnableClIEntState(GL_color_ARRAY);    glVertexPointer(3,GL_float,vertices);    glcolorPointer(3,colours);    glDrawArrays(GL_TRIANGLES,3);   <-- CRASHES HERE    gldisableClIEntState(GL_VERTEX_ARRAY);    gldisableClIEntState(GL_color_ARRAY);    [self.context presentRenderbuffer:GL_RENDERBUFFER];}
解决方法 行glcolorPointer(3,colors)生成GL_INVALID_VALUE错误(您可以看到在执行该行后立即执行po glGetError,它将打印1281).

原因是OpenGL ES不支持3种颜色组件,documentation表示:

GL_INVALID_VALUE is generated if size is not 4.

如果通过添加Alpha将颜色分量的数量更改为4,则代码​​将正常.

总结

以上是内存溢出为你收集整理的objective-c – OpenGL,glDrawArrays和IOS,Bad Access?全部内容,希望文章能够帮你解决objective-c – OpenGL,glDrawArrays和IOS,Bad Access?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1019051.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存