在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/
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |