三角形条带上的OpenGL不需要的颜色褪色问题。想要在三角形上获得均匀的颜色

时间:2010-06-25 12:23:34

标签: c++ iphone opengl-es colors sio2

这是我的问题。我正在使用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 :(得分:0)

尝试添加:

glDisable(GL_LIGHTING);

确保即使默认也没有照明。

答案 1 :(得分:0)

我忘了提到我正在使用引擎Sio2引擎。我去了hardstyle并挂了整个openGL init并自己重新编写。出于某种原因,一个glEnable(GL_TEXTURE_2D)调用正在使奇怪的效果出现。

我遗憾的是无法解释原因,但是如果你正在使用Sio2引擎并最终产生一些奇怪的色彩褪色效果......那么通过评论两个调用中的一个来启用GL_TEXTURE_2D来检查是否解决了这个问题。引擎代码。

我欢迎任何解释,我没有时间深入自己找到它。