在Android上设置OpenGL ES最大距离

Hap*_*eer 0 android opengl-es

在OpenGL ES中,如何指定最大可见距离是多少?我发现当我这样做时:

gl.glTranslatef(0,0,-10f);
Run Code Online (Sandbox Code Playgroud)

我绘制的所有东西都是看不见的,因为它离相机太远了.我如何指定它应该把东西拉得更远?

小智 5

解决问题的方法HappyEngineer只是修补静态GLU.gluPerspective()方法.这是我用于在我的项目中渲染一个简单的多维数据集(只是视图设置代码)的代码(我也在学习):

public void onSurfaceChanged(GL10 gl, int width, int height)
    {
        //Reset The Projection Matrix
        Log.v("Home", String.valueOf(height));
        gl.glViewport(0, 0, width, height);     //Reset The Current Viewport
        gl.glMatrixMode(GL10.GL_PROJECTION);    //Select The Projection Matrix
        gl.glLoadIdentity();    
        //Calculate The Aspect Ratio Of The Window
        GLU.gluPerspective(gl, 45.0f, (float)width / (float)height, 0.1f, 1000.0f);

        gl.glMatrixMode(GL10.GL_MODELVIEW);     //Select The Modelview Matrix
        gl.glLoadIdentity(); 
    }
Run Code Online (Sandbox Code Playgroud)

因此,即使你是GL的新手,这些函数的名称+如果你有任何3D背景,参数也应该相当明显.对于感兴趣的函数gluPerspective,您将传递对GL实例的引用,FOV或视野的角度,纵横比,然后是远平面或最大视图距离.因此,您了解使用此代码的上下文,我在onSurfaceChanged事件中的GLWallpaperService(GL LiveWallpaper)中使用它.有关更多信息,请参阅以下内容:

http://mindtherobot.com/blog/376/android-ui-making-a-live-wallpaper-fire-simulation/

http://www.rbgrn.net/content/354-glsurfaceview-adapted-3d-live-wallpapers

还有一些很好的教程在droid上使用glES:

http://blog.jayway.com/2009/12/03/opengl-es-tutorial-for-android-part-i/

http://insanitydesign.com/wp/projects/nehe-android-ports/