我不能在lwjgl画绿色方块

时间:2015-04-20 21:39:30

标签: java colors lwjgl

这可能听起来很奇怪,但不知怎的,我的程序只是忽略了绿色

首先,我这样初始化GL :(我不知道,也许这很重要)

private static void initgl() {
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 1280, 720, 0, 1, -1);
    glMatrixMode(GL_MODELVIEW);
    glEnable(GL_TEXTURE_2D);
}

我正在画一个像这样的方格:

public static void gameLoop(){
    while (!Display.isCloseRequested()){
        glClear(GL_COLOR_BUFFER_BIT);
        DrawStuff.square(10, 10, 100, 100, new byte[]{127,127,127});
        Display.update();
        Display.sync(60);
    }
}

以方方法我有

public static void square(int x, int y, int w, int h, byte[] rgb) {
    glColor3b(rgb[0], rgb[1], rgb[2]);
    glBegin(GL_QUADS);
    glVertex2i(x, y);
    glVertex2i(x + w, y);
    glVertex2i(x + w, y + h);
    glVertex2i(x,y+h);
    glEnd();

}

当我运行程序时,我看到了:

enter image description here

顺便说一句,颜色选择器说它是#C808C7。甚至不像我期望的那样#FF00FF

  1. 绿色怎么了?
  2. 为什么颜色会关闭?

1 个答案:

答案 0 :(得分:0)

好的,这个答案对我有帮助:How do color and textures work together?

  

这不是你的问题,但仍需要完成。

弄乱我的颜色的是glEnable(GL_TEXTURE_2D);要实现颜色和纹理填充,每次我想用纯色绘制然后再次启用时,我必须禁用它:

public static void square(int x, int y, int w, int h, byte[] rgb) {
    glDisable(GL_TEXTURE_2D);
    glColor3b(rgb[0], rgb[1], rgb[2]);
    glBegin(GL_QUADS);
    glVertex2i(x, y);
    glVertex2i(x + w, y);
    glVertex2i(x + w, y + h);
    glVertex2i(x,y+h);
    glEnd();
    glEnable(GL_TEXTURE_2D);

}

根据您的情况,未来的读者,您可能希望首先禁用它,只有在需要添加纹理时才启用它。

Volia:enter image description here