我正在iPhone 4(1936X2592)上捕获全分辨率UIImage
然后将其缩放为1936x1936大小的正方形。
现在,我需要将此图像加载到纹理中,并让OpenGL使用GLSL进行渲染。
问题是OpenGL仅支持2个纹理大小的幂,最多只能支持1024个。
那么我该如何解决呢?
谢谢。
编辑:我的问题是无关紧要的,我的目标是3GS及更高版本,它支持2048x2048图像大小。
我的问题是另一个问题:Camera frame to UIImage to OpenGL rendering gives an odd image
最佳答案
从3GS开始,OpenGL支持高达2048x2048的纹理。 4S和iPad2支持4096x4096。
但是,如果不是这种情况,则您的选择围绕着将像素打包在一起,有损压缩或使用多个纹理展开,您都可以在GLSL中或通过几何来修复这两个问题(需要付费)。
最明显的选择是上传为四个图块。您在每个方向上的输出大小为1936,可以上传具有一定重叠的纹理,这样,即使使用线性纹理过滤,也应该能够实现无缝连接。假设您只需要水平分割,则可以确保一个纹理的底部两行与另一个纹理的前两行相同,并将几何图形连接在这两行之间。
其他选项不仅不那么明显,而且用处不大。在有损压缩方面,您可以将纹理从RGB转换为YUV空间,并在代表每个RGBA样本的32位中存储四个5位Y样本,一个6位U样本和一个6位V样本。然后,您需要打开包装并在着色器中重新组合。但是,您会降低视觉质量并大大降低性能。
关于iphone - 在iPhone上使用OpenGL ES 2.0渲染大小> 1024的UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8065171/