2015-07-28 111 views
1

我想呈现2个2d矩形后,我有两个矩形的高度和宽度在一起。现在当我设置第二个四色的颜色时,第一个四色继承我的第一个颜色?OpenGL 1.1改变颜色改变以前的颜色?

我试着用pushmatrix和popmatrix一起使用,但这没什么区别。我也尝试用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的高度。

+0

我觉得很蠢,我错过了,谢谢:) – czaarek99