1

GL_BLENDを使用すると、キューブが期待どおりにレンダリングされません。

glEnable(GL_CULL_FACE);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE);

また、前面に半透明の頂点を描画する場合にも同様の問題が発生します。これは、関連している可能性があります。

関連:OpenGLで半透明の頂点が背景オブジェクトを明るくするのはなぜですか?

これがどのように見えるかです:

通常のキューブhttp://img408.imageshack.us/img408/2853/normalcube.png

そして、これが実際にどのように見えるかです:

ダークキューブhttp://img7.imageshack.us/img7/7133/darkcube.png

色付きの立方体を作成するために使用されるコードと、実際に立方体を描画するために使用されるコードを参照してください。

立方体は次のように描画されています。

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glPushMatrix();
glLoadIdentity();

// ... do some translation, rotation, etc ...

drawCube();

glPopMatrix();

// ... swap the buffers ...
4

3 に答える 3

1

立方体を描画する前に、すべての照明を無効にしてみてください。

glDisable(GL_LIGHTING);
于 2009-06-12T17:18:04.670 に答える
1

2台目で照明が有効になっているようですが、

描画する前に glShadeModel( GL_FLAT ) を試してください。

于 2009-04-07T08:05:59.517 に答える
0

これは私を踏みにじらせました。いくつかの頂点には、不透明でないアルファ値があるように見えます。ただし、投稿したコードにはすべて 1. for alpha があります。それで...もっとデバッグするために、クリアカラーを黒以外のものに変更しようとしましたか? 緑と言う?コードから、法線が指定されていないため、照明がオンになっているとは思えません。

最後のコメント、オフトピック... glBegin/は実際には使用しないでくださいglEnd(頂点ごとに 2 つの関数呼び出し + プリミティブごとに 2 つの関数呼び出しは、OpenGL の最近の開発の適切な使用法ではありません)。で試してみglDrawElementsQUAD_LISTくださいTRIANGLE_LIST。そのために適切にレイアウトされたデータが既にあります。

于 2009-07-31T10:13:34.473 に答える