每次点击都会改变背景颜色

时间:2013-12-09 05:56:19

标签: ios opengl-es-2.0

我无法解释这一点。当我的场景首次渲染时,背景颜色设置为浅灰色 - 就像我想要的那样。但是一旦我点击任何可点击的对象(按钮或步进器),背景颜色就会变为深红色。然后,我再次点击(在同一个对象或任何其他对象上),屏幕恢复原来的颜色。这种灰红色 - 红色 - 红色的切换会永远持续下去。

我不打算这样做,我不知道为什么会这样。由于这是一个OpenGL应用程序,因此在绘制和呈现各种对象时会发生很多颜色变化。但是不是仅由glClearColor控制的背景颜色?我的代码中有太多行要在这里发布,我不希望任何人看到它们,所以我将发布drawInRect方法。这是我打电话给glClearColor的唯一地方。

我还是iOS和OpenGL ES 2.0的新手,所以我想我是在寻求建议。除了glClearColor之外还有什么其他方法可以用来改变屏幕的背景颜色?很明显,这里有一些代码可以做到这一点,但我不知道它会是什么。我没有提到任何地方的深红色,所以我很难过。谢谢你的帮助。

- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
    glClearColor(0.65f, 0.65f, 0.65f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    [self drawUpperLeftScene];
    [self drawUpperRightScene];
}

编辑:我已将此跟踪到glScissor / glEnable(GL_SCISSOR_TEST)组合。如果我评论这些线,我的颜色切换问题就消失了。但这会炸毁我的整个应用程序,所以我宁愿忍受颜色问题。任何人都知道为什么会发生这种情况以及我能做些什么来纠正它?

glViewport(0, FRAME_HEIGHT, FRAME_WIDTH/2, FRAME_HEIGHT/2);
glScissor(0, FRAME_HEIGHT, FRAME_WIDTH/2, FRAME_HEIGHT/2);
glEnable(GL_SCISSOR_TEST);

0 个答案:

没有答案
相关问题