2010-06-25 27 views
1

这是我的问题。我正在使用GL_TRIANGLE_STRIP绘制一个框。没有涉及的纹理,没有材质,也没有着色器。我只是渲染彩色三角形。OpenGL在三角形条上不需要的颜色衰落问题。想要在三角形上获得统一的颜色

你可以看到它看起来像在这里: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

它看起来像我的顶点关闭,你确定你循环的权利?你的步伐如何? – slf 2010-06-25 13:45:02

回答

0

尝试增加:

glDisable(GL_LIGHTING); 

,以确保确实没有照明,即使在默认情况下。

+0

我这样做了,在这里列出了我在呈现之前禁用的所有东西的列表 \t glDisable(GL_TEXTURE_2D); \t glDisable(GL_LIGHTING); \t glDisable(GL_COLOR_MATERIAL); \t glDisable(GL_BLEND); \t glShadeModel(GL_FLAT); \t glDisable(GL_FOG); OpengGL可以做到的基本上是:D – Pencrace 2010-06-25 13:10:29

+0

顺便说一句,它仍然不工作,以防万一它不明确 – Pencrace 2010-06-25 13:30:45

0

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

不幸的是我无法解释为什么,但是如果你使用Sio2引擎并最终产生一些奇怪的颜色衰落效果......那么检查它是否通过注释两个调用之一来解决,以启用GL_TEXTURE_2D引擎代码。

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

+0

小精度,不需要评论任何东西,我检查了一下更多(因为它是永远不会删除一点正在工作的东西)。 因此,如果您在不使用引擎管道的情况下渲染某些内容,请不要在调用sio2ResourceRender()之后渲染它。 – Pencrace 2010-06-25 13:55:35