下面列出了我在向代码添加渲染线程时遇到的一些API问题,以便所有在主线程上发生的图形API调用现在都出现在专用的后台线程上。
对于Win32上的Direct3D和OpenGL,是否还有其他我不知道的问题,或者我的列表是否覆盖了它?
预期问题清单:
D3D9:http://msdn.microsoft.com/en-us/library/windows/desktop/bb147224%28v=vs.85%29.aspx。这基本上意味着必须允许在D3D9的主线程上进行特定的特殊操作。
D3D10 +:http://msdn.microsoft.com/en-us/library/windows/desktop/ee417025.aspx#Multithreading_and_DXGI。这基本上意味着主线程(带有消息泵)不应该阻止等待渲染线程(特别是,渲染线程进行DXGI调用)。
OpenGL:只要上下文仅在渲染线程上处于活动状态,就没有问题,但如上所述,在模式更改期间需要注意等等。
注意:假设我的应用程序一直小心地存储并隔离渲染线程完成其处理所需的所有数据,例如输入缓冲区数据等。我特别询问窗口系统和API级问题以及任何陷阱。