这是我的问题。我正在使用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上运行。
答案 0 :(得分:0)
尝试添加:
glDisable(GL_LIGHTING);
确保即使默认也没有照明。
答案 1 :(得分:0)
我忘了提到我正在使用引擎Sio2引擎。我去了hardstyle并挂了整个openGL init并自己重新编写。出于某种原因,一个glEnable(GL_TEXTURE_2D)调用正在使奇怪的效果出现。
我遗憾的是无法解释原因,但是如果你正在使用Sio2引擎并最终产生一些奇怪的色彩褪色效果......那么通过评论两个调用中的一个来启用GL_TEXTURE_2D来检查是否解决了这个问题。引擎代码。
我欢迎任何解释,我没有时间深入自己找到它。