OpenGL 1.1改变颜色改变以前的颜色?

Posted

技术标签:

【中文标题】OpenGL 1.1改变颜色改变以前的颜色?【英文标题】:OpenGL 1.1 Changing Color changes previous color? 【发布时间】:2015-07-28 08:10:23 【问题描述】:

我正在尝试一个接一个地渲染 2 个 2d 矩形,我将 2 个矩形的高度和宽度放在一起。现在,当我为第二个四边形设置颜色时,第一个四边形会继承我的第一个颜色?

我曾尝试将 popmatrix 与 pushmatrix 一起使用,但这并没有什么区别。我也试过用 glColor4f(1,1,1,1) 重置颜色。

这是我的代码:

protected void renderComponent(Frame component) 
        Rectangle area = new Rectangle(component.getArea());
        int fontHeight = theme.getFontRenderer().FONT_HEIGHT;
        int titleHeight = 25;
        translateComponent(component, false);
        glEnable(GL_BLEND);
        glDisable(GL_CULL_FACE);
        glDisable(GL_TEXTURE_2D);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);


        if(component.isMinimized())

        
        glBegin(GL_QUADS);
        
            RenderUtil.setColor(titleColor);
            glVertex2d(0, 0);
            glVertex2d(area.width, 0);
            glVertex2d(area.width, titleHeight);
            glVertex2d(0, titleHeight);
        
        glEnd();
        glBegin(GL_QUADS);
        
            RenderUtil.setColor(component.getBackgroundColor());
            glVertex2d(0, 0);
            glVertex2d(area.width, 0);
            glVertex2d(area.width, area.height + titleHeight);
            glVertex2d(0, area.height + titleHeight);
        
        glEnd();
        glEnable(GL_TEXTURE_2D);
        theme.getFontRenderer().func_175063_a(component.getTitle(), getCenteredX(area.width, component.getTitle()), 6, RenderUtil.toRGBA(component.getForegroundColor()));
        glEnable(GL_CULL_FACE);
        glDisable(GL_BLEND);

还有我的 util setcolor 方法:

public static void setColor(Color c) 
    glColor4f(c.getRed() / 255f, c.getGreen() / 255f, c.getBlue() / 255f, c.getAlpha() / 255f);

【问题讨论】:

【参考方案1】:

您似乎在第一个矩形的顶部绘制第二个矩形,因此看起来您已经更改了第一个矩形的颜色。

将下面的坐标用于第二个立方体

glVertex2d(0, titleHeight);
glVertex2d(area.width, titleHeight);
glVertex2d(area.width, area.height + titleHeight);
glVertex2d(0, area.height + titleHeight);

这会将第二个矩形放在第一个矩形的下方,并给它一个 area.height 的高度。

【讨论】:

以上是关于OpenGL 1.1改变颜色改变以前的颜色?的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL:加载纹理会改变当前颜色

如何使用 OpenGL 和 GLSL 改变颜色(C++)?

SwiftUI - 脉动动画和改变颜色

如何在OpenGL中设置背景颜色

OpenGL的状态机理解

在指定时间随机改变不同按钮的颜色