1

次の例を使用しています: http://dragonsandbytecode.wordpress.com/2012/06/07/game-dev-diary-5-about-textures-and-2d/

複数のビューポートを表示したいのですが、できれば 1、2、3、4 などを押してオンとオフを切り替えることができます。次の関数では:

- (void)reshape {
NSRect rect = [self bounds];

glViewport(0, rect.size.height/2, rect.size.width/2, rect.size.height/2);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(50, rect.size.width/rect.size.height, .1, 30);


glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glEnable(GL_DEPTH_TEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable( GL_BLEND );
glEnable(GL_TEXTURE_2D);

}

複数の glviewport を書き込むと、他のポートが上書きされます。最初にopenglを画面に描画させる必要があることをどこかで読みましたが、どうすればよいですか? 無知に聞こえたら申し訳ありませんが、ここで私を助けてくれる人に感謝します。GLUT では常にサブウィンドウを使用していましたが、それが多くの異なるコンテキストを使用することを考えると、代わりに glViewport() を使用する方が良いと思います。

4

1 に答える 1

0

glviewport を再度呼び出すと、同じ OpenGL コンテキストのビューポートを新しい四角形に設定することになり、以前の設定が上書きされますが、これは明らかに望んでいるものではありません。

さまざまな OpenGL ベースのビューが画面の異なる領域にあり、その間に OpenGL 以外のコンテンツがある場合、OpenGL で言えば、それぞれに個別の GL コンテキストを使用する必要があります (複数のビューを使用することで実現できます)。 NSOpenGLView に基づくビュー)。または、GL ビューが隣接している場合は、単一の OpenGL コンテキストを使用して (あなたが行っているように)、すべてを 1 つの場所に描画する方がはるかに簡単です。

同じウィンドウ内の GLUT を使用した複数のコンテキストに関しては、これが可能であるようには見えません。代わりに、Apple が提供する OpenGL 統合 (NSOpenGLView、NSOpenGLContext など) の使用に移行することを強くお勧めします。こちらをご覧ください: https://developer.apple.com/opengl/

于 2015-10-02T11:59:21.903 に答える