OpenGL нежелательная проблема выцветания на треугольной полосе. Хотите получить равномерный цвет по треугольнику - PullRequest
1 голос
/ 25 июня 2010

Вот моя проблема.Я рисую коробку, используя GL_TRIANGLE_STRIP.Здесь нет текстуры, нет материала и нет шейдеров.Я просто рендеринг цветного треугольника.

Вы можете увидеть, как это выглядит здесь: Fail box

Но, как вы видите, у меня есть некоторые четкие угасания цветапроблема.Также не активировано освещение.

Здесь код, который я использую для инициализации и рендеринга окна.

//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.

Ответы [ 2 ]

0 голосов
/ 25 июня 2010

Я забыл упомянуть, что я использую двигатель Sio2 Engine. Я занялся хардстилом, перехватил весь инициал openGL и переделал его сам. По какой-то причине один из вызовов glEnable (GL_TEXTURE_2D) вызывал странный эффект.

Я, к сожалению, не могу объяснить, почему, но если вы используете Sio2 Engine и в итоге получаете какой-то странный эффект выцветания ... тогда проверьте, решена ли она, комментируя один из двух вызовов, чтобы включить GL_TEXTURE_2D в код двигателя.

Я приветствую любые объяснения, у меня нет времени, чтобы пойти глубже и найти его сам.

0 голосов
/ 25 июня 2010

Попробуйте добавить:

glDisable(GL_LIGHTING);

, чтобы убедиться, что на самом деле нет освещения, даже если по умолчанию.

...