1

我做了一个新项目,几乎复制了这个指南,但是每当我调用任何 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……我想设置一个 Cocoa 应用程序以使用 OpenGL,这样我就可以专注于游戏代码。

谢谢。

4

3 回答 3

1

您链接的文章并不是一个完整的项目 - 它只是使用 CVDisplayLink 驱动绘图循环的讨论和示例。从 Apple 的OpenGL 编程指南开始,您可能会做得更好。

于 2010-02-05T14:16:29.547 回答
0

Apple 的 GLFullScreen 示例代码中查看 MyOpenGLView.m。他们成功地使用了 CVDisplayLink。“驱动 OpenGL 渲染循环”中缺少的一点是,您需要添加一个互斥体以避免两个线程访问相同的 opengl 上下文。

于 2010-10-07T01:35:24.960 回答
-1

您可以尝试用硬编码数字替换 '[self bounds].size.width' 以查看这是否是问题的一部分。

于 2009-12-12T16:45:19.670 回答