objective-c – OpenGL,glDrawArrays和IOS,Bad Access?
发布时间:2020-12-14 17:49:21 所属栏目:百科 来源:网络整理
导读:我开始在iOS中使用OpenGL.我总是学习使用glBegin()和glEnd()在OpenGL中绘制东西,所以这对我来说是一种新的东西. 我想画一个简单的三角形.我可以很好地绘制一个白色三角形,我甚至可以使用glColor绘制一个完整的彩色三角形.但每当我尝试使用下面的代码为每个顶
我开始在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表示:
如果通过添加alpha将颜色分量的数量更改为4,则代码??将正常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- flash开发中的几个安全问题
- Flex中的CSS: (3)CSS会被编译器转换为什么样的AS代码--组
- c – 继承自enable_shared_from_this返回self的shared_ptr的
- 什么“$(@:%.o =%.d)”在makefile中是什么意思?
- 使用swift定制Xcode项目的链接器
- 编译器工具 Flex Bison for Windows 简单入门例子
- c# – 在WPF中执行静态ComboBox的方法
- c# – Net Core Connection String Dapper visual studio 2
- Flex 自定义事件
- c# – Winforms designer:可以以编程方式实现项目变量?