Java 像素渲染白色(OpenGL)
我试图在我的窗口背景中获得非着色器每像素照明。它应该在左上角渲染为完全白色,在左下角渲染为完全黑色,但实际上它是带有黑色边缘的白色。出于某种原因,除了最右边缘和最下边缘之外的所有像素都是完全白色(边缘为黑色))。为什么渲染不正确Java 像素渲染白色(OpenGL),java,opengl,lwjgl,lighting,Java,Opengl,Lwjgl,Lighting,我试图在我的窗口背景中获得非着色器每像素照明。它应该在左上角渲染为完全白色,在左下角渲染为完全黑色,但实际上它是带有黑色边缘的白色。出于某种原因,除了最右边缘和最下边缘之外的所有像素都是完全白色(边缘为黑色))。为什么渲染不正确 glViewport(0, 0, Display.getWidth(), Display.getHeight()); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, 2
glViewport(0, 0, Display.getWidth(), Display.getHeight());
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 2000, 2000, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
if (lighting != 0)
glDeleteLists(lighting, 1);
lighting = glGenLists(1);
glNewList(lighting, GL_COMPILE);
glDisable(GL_TEXTURE_2D);
glBegin(GL_POINTS);
for (int x = 1; x <= 2000; x++)
{
for (int y = 1; y <= 2000; y++)
{
double dist = new Point(x, y).distance(new Point(0, 0));
double brightness = 1 - (1 / 2000 * dist); //I tried just "1 / 2000 & dist" instead, but that just renders black everywhere
glColor3d(brightness, brightness, brightness);
glVertex2f(x, y);
}
}
glEnd();
glEndList();
glViewport(0,0,Display.getWidth(),Display.getHeight());
glMatrixMode(GL_投影);
glLoadIdentity();
格洛托(0,2000,2000,0,1,-1);
glMatrixMode(GLU模型视图);
如果(照明!=0)
glDeleteLists(照明,1);
照明=glGenLists(1);
glNewList(照明、总图编辑);
glDisable(GL_纹理_2D);
glBegin(总分);
对于(int x=1;x看看你在这里做什么:为什么?啊,它烧起来了!你为什么要这样做?使用着色器!天哪。这正是图形卡发明的目的。还要记住,OpenGL中的颜色是[01]而不是[0255],而1/2000
是整数算术(你想要1.0/2000.0
)@Dave 1.如果我使用OpenGL 1.12以外的任何功能,我可能会切换到着色器。谢谢!这解决了问题!