ios - OpenGL ES 渲染到非 POT 纹理

标签 ios opengl-es

我正在尝试使用 iOS 和 GL ES1 对纹理进行全屏渲染。我已经使用带有附加纹理的 FBO 实现了这一点,并且工作正常。

但我不确定我的做法是否正确: iPhone 屏幕不是二次方,所以我所做的是将 glViewport 设置为最接近的 POT 值以匹配纹理大小,然后将其映射到具有相同屏幕大小的四边形。这可行,但图像看起来有点模糊。

是否可以只绘制附加到 FBO 的纹理的一部分,然后相应地映射四边形 UV 坐标?

另一种方法是使用非锅纹理,但我想避免这种情况。

最佳答案

除了一件事,我会说您的方法很好。您写了“最近的 POT 值以匹配纹理大小”,不要使用最近的值,而是使用更大的最近值。如果缩小它,结果应该会有点模糊。

因此创建一个比屏幕本身大的 POT 纹理,将其附加到帧缓冲区,使用与屏幕参数相同的视口(viewport),然后如果您需要使用该纹理重新显示,请使用纹理坐标,例如 screen。 width/texture.width 而不是 1.0。这应该为您提供一个很好的 1:1 采样,并且结果应该尽可能清晰。

关于ios - OpenGL ES 渲染到非 POT 纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16951651/

相关文章:

android - 如何在android中绘制球体

opengl - VBO等使用的 "OpenGL memory"在哪里以及使用什么

iphone - 区分分段控制值变化是来自用户还是来自系统

iOS:滑动 UIView 开/关屏幕

ios - 如何从 AVAsset 或 AVPlayerItem 获取主 list 中的所有 HLS 变体?

android - OpenGL 能否在 Android 中非全屏运行(而是包含在窗口或布局中)?

ios - 委托(delegate)优势

ios - Xcode 8 : Archive build fails (for nested frameworks) with link errors. 常规构建编译成功

javascript - 具有简单纹理的 Webgl 怪异渲染

android - CPU 可能被挂起,OpenGL 动态壁纸锁定