ウィンドウに 2 つのビューポートを作成しようとしています。1 つはメインの全画面表示、もう 1 つは左上隅の小さい表示です。問題を調べて解決策を調べました。 glScissor() と glViewport() を使用し、深度バッファー ビットをクリアし、深度バッファー ビットを有効にし、(for ループの後) 1 回だけレンダリングしています。しかし、明らかに、私は何かが欠けています。これが私のコードです。前もって感謝します。
編集: スクリーンショットへのリンク: http://imgur[dot]com/a/sdoUy 基本的に、左上のミニ ビューポートがちらつき、消えてはすぐに再表示されます。
void viewports() {
float width = wWidth;
float height = wHeight;
for (int i = 0; i < 2; i++) {
glClearColor(.392,.584,.929,0.0f);
if (i == 0) {
//main view
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(0,0,(GLsizei)width,(GLsizei)height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60,(GLfloat)width/(GLfloat)height,1.0,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
keyOp();
camera();
} else if (i == 1) {
glScissor(0,height - height/3,(GLsizei)height/3,(GLsizei)height/3);
glEnable(GL_SCISSOR_TEST);
glClear(GL_DEPTH_BUFFER_BIT);
glViewport(0,height - height/3,(GLsizei)height/3,(GLsizei)height/3);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60,1,1.0,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0,40,-15,0,-1,-15,1,0,0);
glDisable(GL_SCISSOR_TEST);
}
renderScene();
}
}