Java OpenGL&x2B;LWJGL-glColor4d()未正确着色形状

Java OpenGL&x2B;LWJGL-glColor4d()未正确着色形状,java,opengl,rendering,lwjgl,Java,Opengl,Rendering,Lwjgl,我在使用OpenGL使颜色正常工作时遇到问题。 我正确地绘制了我的形状,它们看起来很好,但是当我调用glColor4d(r、g、b、a)时,它没有正确地使用RGB应该指定的颜色,而是绘制了不同但相似的颜色。例如,大多数绿色绘制为完全黄色或完全绿色,而任何灰色绘制为纯白 Color[r=132,g=234,b=208,a=255,hexa=84EAD0] Color[r=150,g=1,b=59,a=255,hexa=96013B] Color[r=88,g=117,b=170,a=255,hex

我在使用OpenGL使颜色正常工作时遇到问题。 我正确地绘制了我的形状,它们看起来很好,但是当我调用glColor4d(r、g、b、a)时,它没有正确地使用RGB应该指定的颜色,而是绘制了不同但相似的颜色。例如,大多数绿色绘制为完全黄色或完全绿色,而任何灰色绘制为纯白

Color[r=132,g=234,b=208,a=255,hexa=84EAD0]
Color[r=150,g=1,b=59,a=255,hexa=96013B]
Color[r=88,g=117,b=170,a=255,hexa=5875AA]
Color[r=219,g=190,b=26,a=255,hexa=DBBE1A]
Color[r=208,g=51,b=164,a=255,hexa=D033A4]
Color[r=85,g=43,b=228,a=255,hexa=552BE4]
Color[r=167,g=123,b=184,a=255,hexa=A77BB8]
Color[r=241,g=183,b=25,a=255,hexa=F1B719]
在这个随机颜色值的简短列表中,所有颜色值都绘制为实心FFFFFF白色,即使它们都不应为白色

我用来画矩形的代码:

public void drawRectangle(Color fill, double x, double y, double width, double height, double rot){
    GL11.glPushMatrix();
    GL11.glTranslated(x, y, 0);
    GL11.glRotated(rot, 0, 0, 1);
    GL11.glTranslated(-x, -y, 0);
    GL11.glBegin(GL11.GL_TRIANGLES);
    if(fill != null)GL11.glColor4d(fill.getRed(), fill.getGreen(), fill.getBlue(), fill.getAlpha());
    double width2 = width/2;
    double height2 = height/2;
    GL11.glVertex2d(x - width2, y + height2);
    GL11.glVertex2d(x - width2, y - height2);
    GL11.glVertex2d(x + width2, y + height2);
    GL11.glEnd();
    GL11.glBegin(GL11.GL_TRIANGLES);
    if(fill != null)GL11.glColor4d(fill.getRed(), fill.getGreen(), fill.getBlue(), fill.getAlpha());
    GL11.glVertex2d(x - width2, y - height2);
    GL11.glVertex2d(x + width2, y + height2);
    GL11.glVertex2d(x + width2, y - height2);
    GL11.glEnd();
    GL11.glPopMatrix();
}
glColor4d()。高于
1.0
的所有内容都将更改为
1.0
,并在大多数情况下产生白色。
改变

glColor4d()。高于
1.0
的所有内容都将更改为
1.0
,并在大多数情况下产生白色。
改变


glColor4i()
does”-不,它不,
glColor4ub
does<代码>glColor4i
从−2147483648至2147483647。你也不应该除以
256.0
,但是
255.0
@CalStephens如果这个答案是你问题的解决方案,那么就是正确的答案。谢谢你,克里斯,我忘记了255.0。我想说的是,
glColor4i
参数不限于[0255]间隔,但它们大于255或为负是不正确的。“
glColor4i()
does”-不,它没有,
glColor4ub
does<代码>glColor4i
从−2147483648至2147483647。你也不应该除以
256.0
,但是
255.0
@CalStephens如果这个答案是你问题的解决方案,那么就是正确的答案。谢谢你,克里斯,我忘记了255.0。我想说的是,
glColor4i
参数不限于[0,255]间隔,但它们大于255或为负值是不正确的。
GL11.glColor4d(fill.getRed(), fill.getGreen(), fill.getBlue(), fill.getAlpha());
GL11.glColor4d(fill.getRed() / 255.0, fill.getGreen() / 255.0, fill.getBlue() / 255.0, fill.getAlpha() / 255.0);