gpt4 book ai didi

ios - glBufferSubData 在 iOS 上表现糟糕?

转载 作者:可可西里 更新时间:2023-11-01 04:40:34 25 4
gpt4 key购买 nike

我不太明白为什么这段代码对于 iOS 上的 GPU 很慢,但这段代码在 Windows 上运行良好,没有任何问题。

基本上我正在做的是我有一个大的动态顶点缓冲区(GL_STREAM_DRAW)并且我尝试只更新它的一部分,在一个帧中的部分不应该重叠,所以它们不应该导致刷新和CPU 不应该等待 GPU 完成,但显然不是这种情况我在 iPhone 4 上获得大约 10 fps 即使绘制可能只有 10 到 20 个三角形......而我在我的上获得超过 400 FPS具有相同代码的PC...

正如您在跟踪中看到的那样,我正在重复使用相同的缓冲区,但我要确保更新的部分不会重叠...我可以做些什么来提高性能?

Index   Trace695 glBindBuffer(GL_ARRAY_BUFFER, 1u)696 glBufferSubData(GL_ARRAY_BUFFER, 144l, 144l, 0x0453d090)697 glBlendFunc(GL_SRC_ALPHA, GL_ZERO)698 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)699 glActiveTexture(GL_TEXTURE0)700 glBindTexture(GL_TEXTURE_2D, 12u)701 glUseProgram(12ul)702 glUniform4fv(uniform_000000001cd24950_12_0, 1, {0.0500000f, 0.0000000f, 0.0000000f, 0.0000000f})703 glUniform4fv(uniform_000000001cd24950_12_1, 1, {0.0000000f, 0.0333333f, 0.0000000f, 0.0000000f})704 glUniform4fv(uniform_000000001cd24950_12_2, 1, {0.0000000f, 0.0000000f, -0.0010010f, 0.0000000f})705 glUniform4fv(uniform_000000001cd24950_12_3, 1, {-0.0000000f, 0.6333333f, -0.0010010f, 1.0000000f})706 glDrawArrays(GL_TRIANGLES, 6, 6)707 glBindBuffer(GL_ARRAY_BUFFER, 1u)708 glBufferSubData(GL_ARRAY_BUFFER, 288l, 144l, 0x0453d120)

最佳答案

我猜 iOS 驱动程序不够聪明,无法看到更新的范围(在 glBufferSubData 中)没有与当前处理的范围重叠。我什至不确定您的 PC 驱动程序是否足够智能(可能是您 PC 的整体性能隐藏了这一点)。这取决于驱动程序如何同步以及是否对其进行优化。

处理此问题的一个解决方案是 ARB_map_buffer_range 扩展,它可以向驱动程序提供明确的提示。但是我不确定 ES 是否支持这个。否则,您将无法解决将缓冲区分成多个小缓冲区的问题。

关于ios - glBufferSubData 在 iOS 上表现糟糕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6324405/

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