Java 为什么我的drawRect代码总是显示黑色

Java 为什么我的drawRect代码总是显示黑色,java,lwjgl,Java,Lwjgl,这是我的drawRect代码: public static void drawRect(float X, float Y, float WIDTH, float HEIGHT, float RED, float GREEN, float BLUE) { // clear the screen and depth buffer GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_B

这是我的drawRect代码:

    public static void drawRect(float X, float Y, float WIDTH, float HEIGHT, float RED, float GREEN, float BLUE)
    {
        // clear the screen and depth buffer
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); 
                 
        // set the color of the quad (R,G,B,A)
        GL11.glColor3f(RED, GREEN, BLUE);
             
        // draw quad
        GL11.glBegin(GL11.GL_QUADS);
        GL11.glVertex2f(X,Y);
        GL11.glVertex2f(X+WIDTH,Y);
        GL11.glVertex2f(X+WIDTH,Y+HEIGHT);
        GL11.glVertex2f(X,Y+HEIGHT);
        GL11.glEnd();
    }
这就是我正在做的

Renderer.drawRect(0, 0, Display.getWidth(), Display.getHeight(), 255, 255, 255);

它填充整个屏幕(就像它应该填充的那样),但颜色始终是黑色的。

我建议阅读教程,因为
glColor3f()
期望颜色组件在0…1范围内有3个
float
s,就像大多数加速图形API-s一样。如果这一次失败,其他细节也可能会出现混乱。但是,255仍将被钳制为1,因此例程不会绘制黑色矩形,在之前(设置中)和/或之后(如调用使图形实际显示在屏幕上)缺少某些内容

顺便说一句,LWJGL wiki有一个完整的示例代码,完全说明了您正在尝试做什么:


这回答了你的问题吗?您是否尝试过使用0到1之间的颜色值,而不是0到255之间的颜色值?它们毕竟是漂浮物,这并不能回答我的问题,但谢谢你的建议。尼兰德德夫,是的。我试着把所有的值都设置为1,但它仍然是黑色的。你的投影和模型视图矩阵是什么?
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
  
public class QuadExample {
  
    public void start() {
        try {
        Display.setDisplayMode(new DisplayMode(800,600));
        Display.create();
    } catch (LWJGLException e) {
        e.printStackTrace();
        System.exit(0);
    }
  
    // init OpenGL
    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glLoadIdentity();
    GL11.glOrtho(0, 800, 0, 600, 1, -1);
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
  
    while (!Display.isCloseRequested()) {
        // Clear the screen and depth buffer
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);  
         
        // set the color of the quad (R,G,B,A)
        GL11.glColor3f(0.5f,0.5f,1.0f);
             
        // draw quad
        GL11.glBegin(GL11.GL_QUADS);
            GL11.glVertex2f(100,100);
        GL11.glVertex2f(100+200,100);
        GL11.glVertex2f(100+200,100+200);
        GL11.glVertex2f(100,100+200);
        GL11.glEnd();
  
        Display.update();
    }
  
    Display.destroy();
    }
  
    public static void main(String[] argv) {
        QuadExample quadExample = new QuadExample();
        quadExample.start();
    }
}