2012-04-09 1 views
-1

私はthis guideに従っています。OpenGLViewが表示されない

ポイント13で何を言っているのか、私は誠意を欠いていましたが、インスペクタのペインを開いたばかりですが、設定する属性は何もわかりません。 しかし、コードをコピーして適切なクラスに貼り付けました。 しかし、Objective-Cで空のウィンドウを持つ通常のプログラムを作成したときと同じように、三角形の描画がない通常のウィンドウが表示されます。

編集:

私は問題は、ウィンドウの初期化だと思ったので、私はのdrawRectメソッドの開始を作るためにawakeFromNibメソッドを書かれている:

- (void) awakeFromNib 
{ 
    NSRect rect=NSMakeRect(100.0, 100.0, 100.0, 100.0); 
    [self drawRect: rect]; 
} 

しかしのdrawRectの最初の命令でEXC_BAD_ACCESS例外が発生する

glClearColor(0, 0, 0, 0); 

ウィンドウが正しく初期化されていない可能性がありますか?

+1

をあなたが問題を抱えていますか?私は上記のポストでは質問が表示されません。ステップ13で何を理解できなかったのですか? – user1118321

+0

問題は、ウィンドウに三角形が含まれていないことです。空のウィンドウです。後でスクリーンショットを投稿します。ポイント13では、「追加の属性が必要な場合は、プログラムで設定する必要があります。属性を設定する方法を理解していません。 –

+0

ステップ13は重要ではありません。これは、IBを介して設定できるレンダラとバッファの属性に慣れ親しんでいることを示唆しています。そのステップで何もする必要はありません。なぜ何もレンダリングされないということに関しては、手順を見直して、それぞれが正しく行ったかどうかを確認するだけです。うーん、私は今チェックすることはできませんが、私はIBがデフォルトでコア3.2のプロファイルを使用するNSOpenGLViewインスタンスを設定するのだろうかと思います。そのサンプルコードでは、従来のプロファイルが必要です。 –

答えて

1

(現在のコンテキストを最初に設定せずに-drawRect:を送信したため)現在のコンテキストが存在しないときにOpenGLが現在のコンテキストの状態を変更しようとするため、おそらくセグメンテーションが失敗します。

自分で-drawRect:を送信しないでください。代わりに、-setNeedsDisplayを使用してみましょうココアは、現在のコンテキストを設定し、あなたのための-drawRect:を送信します。

- (void)awakeFromNib { 
    self.needsDisplay = YES; 
} 
関連する問題