如何自动扩展我的OpenGL ES 2.0窗口?

时间:2011-10-05 04:44:42

标签: android opengl-es android-ndk opengl-es-2.0

我正在用C ++编写Android和iOS引擎,目前专注于使用NDK的Android。

我想渲染一个较小尺寸的视口(例如600x360)并自动将其放大到原始rez(比如800x480)。目前,较小的视口显示在屏幕的下角,带有黑色区域。 / p>

我的问题是我不知道使用NDK以透明地执行此操作的简单方法。 API级别11中有GLSurfaceview.setScaleX(和Y)函数,这将是完美的,但在我目标的API级别9中不存在。另一个糟糕的解决方案是渲染到FBO并将其作为最后一步进入屏幕。

我正在考虑简单地讲述一个缩放矩阵,并询问引擎的用户(现在只是我)在绘制到屏幕时总是将顶点乘以这个。这与使用glPushMatrix类似。

我搜索了一会儿,找不到一个好的解决方案。有谁知道如何帮忙?

1 个答案:

答案 0 :(得分:5)

您可以从 GLSurfaceView GLSurfaceView.getHolder()获取 SurfaceHolder ,然后通过调用SurfaceHolder.setFixedSize(width, height)设置所需的分辨率。

在我的情况下,GLSurfaceView有一个 FrameLayout 根填充屏幕,我不确定是否需要 - 我有它因为我在顶部添加其他元素 - 但如果你设置大小和它没有填满屏幕然后你知道缺少什么!

使用 FrameBuffer 也是一种有效的方法,你也可以使用它绘制一些很酷的效果,当你想要做的唯一事情就是缩小渲染时,上面的方法会更快(或者可能吗?我还没有尝试过。)