Вопрос

Я сделал новый проект и в значительной степени скопировал это руководство, но всякий раз, когда я вызываю любую функцию 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, чтобы я мог сосредоточиться на коде игры.

Спасибо.

Это было полезно?

Решение

Статья, на которую вы ссылаетесь, на самом деле не является законченным проектом — это просто обсуждение и пример использования CVDisplayLink для управления циклом рисования.Вероятно, вы добьетесь большего, начав с Apple. Руководство по программированию OpenGL.

Другие советы

Проверьте MyOpenGLView.m в Пример кода Apple для GLFullScreen.Они успешно используют CVDisplayLink.В разделе «Управление циклами рендеринга OpenGL» отсутствует тот факт, что вам нужно добавить мьютекс, чтобы избежать доступа двух потоков к одному и тому же контексту opengl.

Вы можете попробовать заменить «[самограницы].size.width» жестко запрограммированными числами, чтобы проверить, является ли это частью проблемы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top