我试图在彼此之后渲染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);
}
答案 0 :(得分:1)
您似乎正在第一个上方绘制第二个矩形,从而使您看起来已经改变了第一个矩形的颜色。
使用下面的坐标代替第二个多维数据集
glVertex2d(0, titleHeight);
glVertex2d(area.width, titleHeight);
glVertex2d(area.width, area.height + titleHeight);
glVertex2d(0, area.height + titleHeight);
这会将第二个矩形放在第一个矩形下面,并给它一个area.height的高度。