JOGL - 照明/相机

时间:2013-02-20 21:28:32

标签: java opengl jogl

我已经为我的JOGL项目添加了一个光源,当物体静止时,它似乎工作得很好,当我移动相机时,它随着旋转逐渐变暗,这是id期望但是一旦旋转90度屏幕变黑了,有谁知道这是为什么?另一方需要另一个光源吗?我希望它有点像太阳一样,即点亮整个场景,但是当相机在物体的另一侧时,它会稍微变暗。

照明

float light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
float light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
float light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
float light_position[] = { 1.0f, 1.0f, 1.0f, 0.0f };

gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_AMBIENT, light_ambient, 0);
gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_DIFFUSE, light_diffuse, 0);
gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_SPECULAR, light_specular, 0);
gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, light_position, 0);

gl.glEnable(GL2.GL_LIGHTING);
gl.glEnable(GL2.GL_LIGHT0);
gl.glDepthFunc(GL.GL_LESS);
gl.glEnable(GL.GL_DEPTH_TEST);

其次,当相机旋转时,一些形状似乎变形并且看起来像完全不同的形状,即立方体像枕形一样,侧面被拉伸了不可思议的数量,并且它使我的整个物体看起来略微变形。有没有简单的方法来改变这个?我曾尝试弄乱gluPerspective并且似​​乎没有改变我想要的东西。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

您已为场景添加了漫反射光和镜面反射光,但这些光不会到达背离光源的曲面。您可以添加一些环境光(当前在代码片段中设置为0,0,0),以便所有曲面都能获得一些照明。

对于变形的形状,这实际上是一个单独的问题,并且没有足够的细节知道为什么会发生这种情况。