Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OpenGL 1.1更改颜色会更改以前的颜色吗?_Java_Opengl - Fatal编程技术网

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

Java OpenGL 1.1更改颜色会更改以前的颜色吗?,java,opengl,Java,Opengl,我试图在两个二维矩形之后渲染,我将两个矩形的高度和宽度放在一起。现在,当我为第二个四边形设置颜色时,第一个四边形将继承我的第一个颜色 我曾尝试将popmatrix与pushmatrix一起使用,但没有任何区别。我还尝试用glColor4f(1,1,1,1)重置颜色 这是我的密码: protected void renderComponent(Frame component) { Rectangle area = new Rectangle(component.getArea())

我试图在两个二维矩形之后渲染,我将两个矩形的高度和宽度放在一起。现在,当我为第二个四边形设置颜色时,第一个四边形将继承我的第一个颜色

我曾尝试将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