我创建了一个新项目并且几乎复制了this guide,但每当我调用任何OpenGL函数时,标记为// Drawing code here
的地点就会崩溃。我在那里:
glViewport(0, 0, [self bounds].size.width, [self bounds].size.height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, [self bounds].size.width, [self bounds].size.height, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.375, 0.375, 0.0);
glClearColor(1, 1, 1, 1);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0, 0, 0);
glBegin(GL_LINES);
glVertex2f(10, 10);
glVertex2f(300, 300);
glEnd();
glFlush();
但是只是调用一个OpenGL函数会崩溃它,报告GDB: Program received signal: "EXC_BAD_ACCESS".
首先,如果它确实有效,那么代码是否正常?每次被调用时都在顶部做所有的事情?它应该是2d,原点在左上角。为什么会崩溃?我已经链接并导入了CoreVideo和OpenGL ......我想设置一个Cocoa应用程序来使用OpenGL,这样我就可以专注于游戏代码了。
感谢。
答案 0 :(得分:1)
您链接的文章并不是一个完整的项目 - 它只是使用CVDisplayLink来驱动绘图循环的讨论和示例。从Apple的OpenGL Programming Guide.
开始,你可能会做得更好答案 1 :(得分:0)
在Apple's sample code for GLFullScreen中查看MyOpenGLView.m。他们成功使用了CVDisplayLink。 “驱动OpenGL渲染循环”中缺少的是您需要添加互斥锁以避免两个线程访问相同的opengl上下文。
答案 2 :(得分:-1)
您可以尝试用硬编码的数字替换'[self bounds] .size.width',看看是否是问题的一部分。