gpt4 book ai didi

android - 如何自动缩放我的 OpenGL ES 2.0 窗口?

转载 作者:搜寻专家 更新时间:2023-11-01 07:38:13 25 4
gpt4 key购买 nike

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

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

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

我正在考虑简单地描述一个缩放矩阵,并要求引擎的用户(现在只有我)在绘制到屏幕时始终将顶点乘以该矩阵。这类似于使用 glPushMatrix

我搜索了一段时间,没有找到好的解决方案。有谁知道如何提供帮助?

最佳答案

您可以做的是从GLSurfaceView 获取SurfaceHolderGLSurfaceView.getHolder()然后通过调用 SurfaceHolder.setFixedSize(width, height) 设置您想要的分辨率.

在我的例子中,GLSurfaceView 有一个填充屏幕的 FrameLayout 根,我不确定这是否需要 - 我有它是因为我在顶部添加了其他元素 - 但如果你设置大小和它没有填满屏幕,那么您就知道缺少了什么!

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

关于android - 如何自动缩放我的 OpenGL ES 2.0 窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7656783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com