关于D3D中BeginScene EndScene及Present函数及可能的性能关系(转)

计算机3D图像相关技术的讨论

关于D3D中BeginScene EndScene及Present函数及可能的性能关系(转)

帖子awakening3d » 2014年 4月 16日 16:39

关于D3D中BeginScene EndScene及Present函数及可能的性能关系(积累)(转自http://blog.sina.com.cn/s/blog_6d4b374e0100zo5r.html)

在D3D中,需要使用BeginScene和EndScene函数,然后所有的图元绘制代码才能被调用。通过了解,需要注意下下面一些问题:
1 BeginScene和EndScene必须成对实现。
2 BeginScene不能连续调用两次否则会出现调用异常。
3 EndScene属于作用是实际应用所有的绘制命令至显卡,但是它是异步执行的,即它会立即返回,但是不保证绘制命令执行完成。
4 Present函数会最终等待所有绘制命令结束并将结果从back buffer拷贝到front buffer。
5 BeginScene和EndScene之间的绘制代码量可以不要太多,当然太少也不好。这样才能保证最后的present不至于等待大量的CPU时间等显卡完成所有的绘制指令。这样可以在present之前多次使用BeginScene/EndScene队,保证CPU和GPU始终基本同时在工作(并行)。
6 如果确实存在BeginScene/EndScene之间绘制命令过多,可以在EndScene/Present之间添加一些CPU指令,避免CPU在Present时过多时间空等GPU完成绘制返回。
awakening3d
网站管理员
 
帖子: 150
注册: 2010年 10月 28日 17:39

回到 学习交流

在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客

cron