菜鸟教程小白 发表于 2022-12-12 18:03:38

ios - ios7上的glTexSubImage2D慢


                                            <p><p>我有一个项目,我需要更新纹理的多个区域,并将这些区域每帧同步到 openGL。我正在将 openGL ES 2.0 与 xcode5 中的 iDevices 项目一起使用。</p>

<p>为了同步这些纹理更改,我使用 glTexSubImage2D,可能每帧调用此函数数百次,用于绑定(bind)纹理的小区域。在运行 ios6 的 iPhone4 上进行测试时,这足以满足我的需求。</p>

<p>当我在运行 ios7 的 iPad Mini Retina 上对其进行测试时,它明显停滞不前。
在 glTexSubImage2D 下调用的三个函数的 mach_msg_trap 中显示了停顿。</p>

<p>很遗憾,我无法发布配置文件的图像(由于缺少信誉点),但这三个函数是从 agxuBlitRender 调用的,总共占用了 86.1% 的 CPU:
agxuCreateRenderTarget (38.2%)
提交数据包 (25.5%)
agxuReleaseAllRenderTargets (16.2%)</p>

<p>我很欣赏 mach_msg_trap 只是意味着线程在等待时正在旋转,但我无法从分析器确定它在等待什么。</p>

<p>我最初想知道它是否可能是重建 mip-map 或 ios7 强制执行的其他一些过程。我没有打开 mipmap,尽管根据 gl.h 中的选项,我可能没有太多选择(所有 TextureMinFilters 都是面向 mipmap,即使我将其设置为 GL_NEAREST,它可能默认为 GL_NEAREST_MIPMAP_NEAREST 如果它认为 GL_NEAREST 无效)。如果 iPhone4 版本在底层处理 mipmapping,那么它使用完全相同的代码这一事实可能不是决定因素。</p>

<p>虽然我尝试每帧只复制整个纹理一次,但随着纹理尺寸的增大,这会显着变慢,因为函数 twiddle32x32_32 位于 openGL 的核心深处,每帧占用大量 CPU。</p> p>

<p>感谢您的帮助。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>glTexSubImage2D() 在所有使用 PowerVR GPU 的设备上都非常慢,因为它们基于延迟渲染图 block 的设计和旋转。我更熟悉 Android,您可以在其中获取指向纹理的虚拟指针并使用 EGL 图像扩展直接访问像素。这通常快 4 倍。但是,我读到 iOS 中也有类似的功能。例如:</p>

<p> <a href="https://stackoverflow.com/questions/9261450/using-opengl-es-texture-caches-instead-of-glreadpixels-to-get-texture-data" rel="noreferrer noopener nofollow">Using OpenGL ES texture caches instead of glReadPixels to get texture data</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - ios7上的glTexSubImage2D慢,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/21162688/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/21162688/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - ios7上的glTexSubImage2D慢