相关疑难解决方法(0)

Opengl非同步/非阻塞映射

我刚刚发现了以下OpenGL规范ARB_map_buffer_range.

我想知道是否可以使用此扩展程序进行非阻塞地图调用?

目前在我的应用程序中我渲染到FBO,然后我映射到主机PBO缓冲区.

glMapBuffer(target_, GL_READ_ONLY);  
Run Code Online (Sandbox Code Playgroud)

但是,问题在于它在传输数据时会阻塞渲染线程.

我可以通过管道渲染来减少这个问题,但延迟是我的应用程序中的一个大问题.

我的问题是我是否可以将map_buffer_range与MAP_UNSYNCHRONIZED_BIT一起使用并等待映射操作在另一个线程上完成,或者在同一线程上推迟映射操作,同时渲染线程渲染下一帧.

例如

thread 1:

map();
render_next_frame();

thread 2:

wait_for_map
Run Code Online (Sandbox Code Playgroud)

要么

thread 1:

map();
while(!is_map_ready())
   do_some_rendering_for_next_frame();
Run Code Online (Sandbox Code Playgroud)

我不确定的是我如何知道地图操作何时准备好,规范只提到"其他同步技术以确保正确操作".

有任何想法吗?

opengl synchronization nonblocking pbo

7
推荐指数
2
解决办法
3410
查看次数

标签 统计

nonblocking ×1

opengl ×1

pbo ×1

synchronization ×1