问题现象:
pboUnpack.zip 参考这里的代码编写PBO异步读回数据时,出现一次耗时短,下一次耗时特别长(为同步读数据接口的2倍时间)问题。通过日志打印,发现耗时在
GLubyte* ptr = (GLubyte*)glMapBufferARB(GL_PIXEL_PACK_BUFFER_ARB,
GL_READ_ONLY_ARB);
问题分析:
出现很有规律的glMapBufferARB函数一次耗时短,而且下一次耗时有特别长的问题。经过多次分析调试,最后发现是没有执行交换缓冲区导致。每次异步读数据后加上glfwSwapBuffers函数后问题解决。速度确实非常快,特别是1080p这样的大图处理。