
我想画一个简单的三角形.我可以很好地绘制一个白色三角形,我甚至可以使用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_VALUEis generated if size is not 4.
如果通过添加Alpha将颜色分量的数量更改为4,则代码将正常.
总结以上是内存溢出为你收集整理的objective-c – OpenGL,glDrawArrays和IOS,Bad Access?全部内容,希望文章能够帮你解决objective-c – OpenGL,glDrawArrays和IOS,Bad Access?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)