这可能听起来很奇怪,但不知怎的,我的程序只是忽略了绿色
首先,我这样初始化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();
}
当我运行程序时,我看到了:
顺便说一句,颜色选择器说它是#C808C7。甚至不像我期望的那样#FF00FF
答案 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: