Java OpenGL雾基于Z轴而不是深度
我试图在我的场景中添加雾,但与远离摄影机的场景变得更加雾化不同,雾似乎完全取决于高度。下面是演示问题的屏幕截图:Java OpenGL雾基于Z轴而不是深度,java,android,opengl-es,Java,Android,Opengl Es,我试图在我的场景中添加雾,但与远离摄影机的场景变得更加雾化不同,雾似乎完全取决于高度。下面是演示问题的屏幕截图: (来源:) 我使用以下代码初始化雾: 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
(来源:) 我使用以下代码初始化雾:
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 );
知道怎么了吗?哦。您需要对GL_MODELVIEW矩阵使用gluLookAt,而不是GL_投影。多么美妙的时刻。正如您所说,您的相机需要使用GL_MODELVIEW
请参见您的雾将应用于世界坐标,而不是视图坐标。不知道为什么:/Z轴是深度。。。你把一切都画错了。X是从左到右,Y是从下到上,Z是从远到近。