OpenGL雾基于Z轴而不是深度

时间:2010-12-05 18:46:15

标签: java android opengl-es

我正在尝试为我的场景添加雾,但是远离相机的场景变得更加模糊,雾似乎完全取决于高度。以下是演示此问题的屏幕截图:

http://gyazo.com/ab60dfd1d85a3a5533153f09ef6a059e.png

我使用以下代码初始化雾:

gl.glFogx( GL10.GL_FOG_MODE, GL10.GL_LINEAR );
gl.glFogfv( GL10.GL_FOG_COLOR, new float[] { 1.0f, 1.0f, 1.0f, 1.0f }, 0 );
gl.glFogf( GL10.GL_FOG_DENSITY, 0.35f );
gl.glHint( GL10.GL_FOG_HINT, GL10.GL_DONT_CARE );
gl.glFogf( GL10.GL_FOG_START, 10.0f );
gl.glFogf( GL10.GL_FOG_END, 15.0f );
gl.glEnable( GL10.GL_FOG );

这就是我的投影设置方式:

gl.glMatrixMode( GL10.GL_PROJECTION );
gl.glLoadIdentity();
GLU.gluPerspective( gl, 90.0f, _w / _h, 0.1f, 15.0f );
GLU.gluLookAt( gl, _player.position.x, _player.position.y, _player.position.z, centerX, centerY, centerZ, 0.0f, 0.0f, 1.0f );

知道什么是错的吗?

2 个答案:

答案 0 :(得分:1)

喔。您需要将gluLookAt用于GL_MODELVIEW矩阵而不是GL_PROJECTION。真是太棒了。

答案 1 :(得分:1)

正如您所说,您需要为相机使用GL_MODELVIEW。

请参阅http://www.sjbaker.org/steve/omniv/projection_abuse.html