iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了glBufferSubData在iOS上表现糟糕吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我无法理解为什么这段代码在iOS上的GPU速度慢,这段代码Windows上运行良好而没有任何问题.

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

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

Index   Trace
695 glBindBuffer(GL_ARRAY_BUFFER,1u)
696 glBufferSubData(GL_ARRAY_BUFFER,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})
703 glUniform4fv(uniform_000000001cd24950_12_1,{0.0000000f,0.0333333f,0.0000000f})
704 glUniform4fv(uniform_000000001cd24950_12_2,-0.0010010f,0.0000000f})
705 glUniform4fv(uniform_000000001cd24950_12_3,{-0.0000000f,0.6333333f,1.0000000f})
706 glDrawArrays(GL_TRIANGLES,6,6)
707 glBindBuffer(GL_ARRAY_BUFFER,1u)
708 glBufferSubData(GL_ARRAY_BUFFER,288l,0x0453d120)

解决方法

我猜iOS驱动程序不够聪明,看到更新的范围(在glBufferSubData中)与当前处理的范围不重叠.我甚至不确定你的PC驱动程序是否足够智能(可能是你PC的整体性能隐藏).它取决于驱动程序如何同步以及是否优化.

处理此问题的一种解决方案可能是ARB_map_buffer_range扩展,它可以为驱动程序提供明确的提示.但我不确定ES是否支持这一点.否则你不会把你的缓冲区分成多个小缓冲区.

大佬总结

以上是大佬教程为你收集整理的glBufferSubData在iOS上表现糟糕吗?全部内容,希望文章能够帮你解决glBufferSubData在iOS上表现糟糕吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。