Java 为什么我的drawRect代码总是显示黑色
这是我的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
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();
}
}