【问题标题】:OpenGL unwanted color fading problem on triangle strip. Want to get uniform color over the triangle三角带上的 OpenGL 不必要的褪色问题。想要在三角形上获得均匀的颜色
【发布时间】:2010-06-25 12:23:34
【问题描述】:

这是我的问题。我正在使用 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 上运行。

【问题讨论】:

  • 在我看来您的顶点已关闭,您确定循环正确吗?你的步幅是多少?

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


【解决方案1】:

尝试添加:

glDisable(GL_LIGHTING);

确保即使默认情况下也确实没有照明。

【讨论】:

  • 我这样做了,这里是我在渲染 glDisable(GL_TEXTURE_2D); 之前禁用的所有东西的列表; glDisable(GL_LIGHTING); glDisable(GL_COLOR_MATERIAL); glDisable(GL_BLEND); glShadeModel(GL_FLAT); glDisable(GL_FOG);基本上OpenGL可以做的一切:D
【解决方案2】:

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

不幸的是,我无法解释原因,但如果您使用 Sio2 引擎并最终出现一些奇怪的褪色效果...然后通过注释两个调用之一来检查它是否已解决以启用 GL_TEXTURE_2D 在引擎代码。

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

【讨论】:

  • 小精度,不需要评论任何东西,我检查了我更多(因为删除一些正在工作的东西永远不会好)。因此,如果您在不使用引擎管道的情况下渲染某些内容,请不要在调用 sio2ResourceRender() 后渲染它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多