プリミティブを通常の塗りつぶしモードでレンダリングしてから、ワイヤー フレームとしてレンダリングしようとしています。
レンダリング コード:
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(0.9f, 0.9f, 0.9f, 1);
// reset matrix
glLoadIdentity();
// fill display list
glColor3c(150, 255, 255);
glCallList(lDList);
// wireframe display list
glColor3f(0, 0, 0);
glLineWidth(10);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINES);
glCallList(lDList);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
表示リスト作成コード:
lDList = glGenLists(1);
glNewList(lDList, GL_COMPILE);
glBegin(GL_QUADS);
glVertex3i(-1, -1, 0);
glVertex3i(1, -1, 0);
glVertex3i(1, -1, -25);
glVertex3i(-1, -1, -25);
glEnd();
glEndList();
glColor3c マクロ:
#define glColor3c(r, g, b) glColor3f(r / 255, g / 255, b / 255)
周囲に黒いフレームが描かれたシアン色の平面が描画されることを期待していますが、表示リストを 2 回目にレンダリングすると、全体が単純に塗りつぶされて描画され、他のプリミティブのピクセルが上書きされます。描画したい平面ができあがりますが、それは単なる黒 (「バージョン」の行に指定した色) です。
役立つ可能性のあるその他の情報は、MSVC++ 2010 を搭載した Windows 7 で SDL を使用しているということです。 . 私の唯一の OpenGL セットアップ コードは、プロジェクションとモデル ビュー マトリックスをセットアップし、表示リストを作成します。
明らかに私の質問は、ディスプレイ リストを 2 回目に描画するときに、線を作成するのではなく、プリミティブを埋めるのはなぜですか? これを修正するにはどうすればよいですか?