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 関数を 1 つ呼び出すだけでクラッシュし、レポートが表示されますGDB: Program received signal: "EXC_BAD_ACCESS".。まず、機能した場合、そのコードは適切ですか? 呼び出されるたびにトップですべてのことを実行しますか? 原点が左上にある 2D のはずです。そして、なぜクラッシュするのですか?CoreVideo と OpenGL をリンクしてインポートしました... ゲーム コードに集中できるように、OpenGL を使用するように Cocoa アプリケーションをセットアップしたいと考えています。

ありがとう。

4

3 に答える 3

1

リンクした記事は、実際には完全なプロジェクトではありません。これは、CVDisplayLinkを使用して描画ループを駆動するためのディスカッションとサンプルにすぎません。AppleのOpenGLプログラミングガイドから始めると、おそらくもっとうまくいくでしょう。

于 2010-02-05T14:16:29.547 に答える
0

Apple の GLFullScreen のサンプル コードでMyOpenGLView.m を確認してください。彼らは CVDisplayLink をうまく使っています。「Driving OpenGL Rendering Loops」に欠けているのは、同じ opengl コンテキストにアクセスする 2 つのスレッドを回避するためにミューテックスを追加する必要があるという事実です。

于 2010-10-07T01:35:24.960 に答える
-1

'[self bounds].size.width' をハードコードされた数値に置き換えて、それが問題の一部であるかどうかを確認できます。

于 2009-12-12T16:45:19.670 に答える