当前位置: 代码迷 >> java >> OpenGL 1.1更改颜色会更改以前的颜色吗?
  详细解决方案

OpenGL 1.1更改颜色会更改以前的颜色吗?

热度:91   发布时间:2023-08-04 09:16:06.0

我试图互相渲染2个2d矩形,我将2个矩形的高度和宽度放在一起。 现在,当我为第二个Quad设置颜色时,第一个Quad继承了我的第一个颜色?

我尝试将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);
}

您似乎在第一个矩形的上方绘制了第二个矩形,从而使它看起来像您已经更改了第一个矩形的颜色。

将下面的坐标用于第二个多维数据集

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

这会将第二个矩形放置在第一个矩形的下方,并为其指定一个area.height的高度。