【发布时间】:2009-11-20 22:39:14
【问题描述】:
我创建了一个新项目并且几乎复制了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". 首先,如果它确实有效,那么这段代码好吗?每次被调用时都在顶部做所有这些事情?它应该是二维的,原点在左上角。为什么会崩溃?我已经链接并导入了 CoreVideo 和 OpenGL...我想设置一个使用 OpenGL 的 Cocoa 应用程序,这样我就可以专注于游戏代码。
谢谢。
【问题讨论】:
-
我没有看到标有“Drawing code here”的地方。
-
另外,您可以使用调试器(或崩溃日志,当不在 Xcode 中运行您的应用时)找到导致崩溃的确切函数调用。
-
@Peter Hosey:哦,原来是
// Add your drawing codes here。而且我确实使用了调试器,它在任何 OpenGL 函数调用时都会崩溃。但如果我使用 -drawRect(不使用 CVDisplayLink)来做,它就可以工作。嗯……
标签: cocoa opengl macos crash function-call