1

これが私の問題です。GL_TRIANGLE_STRIP を使用してボックスを描画しています。テクスチャ、マテリアル、シェーダーは関係ありません。色付きの三角形をレンダリングしているだけです。

ここでどのように見えるかを見ることができます:失敗ボックス

しかし、ご覧のとおり、明確な色あせの問題があります。照明も点灯していません。

ボックスの初期化とレンダリングに使用するコードを次に示します。

//here init code
for(list<Particle*>::iterator p = this->shapes[this->activeShape].particles.begin();
                p != this->shapes[this->activeShape].particles.end(); p++)
            {
                float yValue = 20.0f;

                this->vertexArray[this->activeShape][current].Position.x = (*p)->x0.x;
                this->vertexArray[this->activeShape][current].Position.y = -yValue;
                this->vertexArray[this->activeShape][current].Position.z = (*p)->x0.y;


                this->vertexArray[this->activeShape][current + listSize].Position.x = (*p)->x0.x;
                this->vertexArray[this->activeShape][current + listSize].Position.y = yValue;
                this->vertexArray[this->activeShape][current + listSize].Position.z = (*p)->x0.y;

                current++;
            }


        // render code
                glFrontFace(GL_CW);
                glEnable(GL_BLEND);

                glVertexPointer(3, GL_FLOAT, sizeof(LsmVertexColor), &this->vertexArray[this->activeShape][0].Position);
                glEnableClientState(GL_VERTEX_ARRAY);

                glColor4f(SCULPTY_R, SCULPTY_G, SCULPTY_B, SCULPTY_A);

                glDrawElements(GL_TRIANGLE_STRIP, 20, GL_UNSIGNED_SHORT, &this->indexArray[this->activeShape][0]);
                glDrawElements(GL_TRIANGLE_STRIP, 20, GL_UNSIGNED_SHORT, &this->indexArray[this->activeShape][22]);
                glDrawElements(GL_TRIANGLE_STRIP, 10, GL_UNSIGNED_SHORT, &this->indexArray[this->activeShape][44]);
                glDrawElements(GL_TRIANGLE_STRIP, 10, GL_UNSIGNED_SHORT, &this->indexArray[this->activeShape][54]);

私は OpenGL ES 1.1 を使用しており (最新ではないことはわかっています)、プログラムは iPhone/iPad で実行されています。

4

2 に答える 2

0

追加してみてください:

glDisable(GL_LIGHTING);

デフォルトであっても、実際に照明がないことを確認します。

于 2010-06-25T12:26:44.923 に答える
0

エンジン Sio2 Engine を使用していることを忘れていました。私はハードスタイルに行き、openGL init 全体をフックして、自分でやり直しました。何らかの理由で、glEnable(GL_TEXTURE_2D) 呼び出しの 1 つが奇妙な効果を発生させていました。

残念ながらその理由を説明することはできませんが、Sio2 Engine を使用していて変色が発生する場合は、エンジン コードで GL_TEXTURE_2D を有効にする 2 つの呼び出しのいずれかにコメントを付けて解決するかどうかを確認してください。

説明を歓迎します。深く掘り下げて自分で見つける時間がありません。

于 2010-06-25T13:46:02.927 に答える