0

我为我的 Android 应用程序获得的 OpenGL ES 2.0 渲染上下文处于纵向模式 (480x800),但我想以横向模式 (800x480) 进行渲染。

如何旋转 OpenGL 视口,最好不修改发送到着色器的矩阵?

我有一堆着色器,其中一些使用身份矩阵(如字体渲染器)。所以看起来我需要在几个地方向矩阵添加一个旋转组件。有没有办法以某种方式全局旋转视口?

我可以以某种方式从 Android 请求风景渲染上下文吗?

这个问题是否有任何架构模式?

4

2 回答 2

3

通过添加解决了问题<activity android:screenOrientation="landscape" ...。这使得 OpenGL 使用横向。

于 2011-03-04T01:47:11.857 回答
0

我在我的应用程序中做两件事。首先,将此行修改为您的清单文件:

<activity android:name=".YourActivity" android:label="@string/app_name" android:configChanges="keyboardHidden|orientation">

这阻止了它重新初始化旋转中的所有内容。其次,在您的 GLSurfaceView.Renderer 派生类中覆盖此函数:

public void onSurfaceChanged(GL10 gl10, int width, int height) 
{
    gl10.viewport(0, 0, width, height);

    //setup your matrices here
}

这将设置您的视口,但您也必须在其中更新矩阵以考虑新的屏幕几何形状。您实际上不必为矩阵添加额外的旋转,只需在“onSurfaceChanged”方法中重新设置项目矩阵。

HTH。

于 2011-03-03T23:01:05.113 回答