Cru*_*han 25
我推荐OpenGL的原因如下: -
也就是说,您的系统要求和个人偏好可能会以任何方式提示,因为两种方法都是可靠的实现.在缺点方面,OpenGL非常适合状态机,并且可能很难适应OO,尽管这当然不是不可能的.
编辑:添加以澄清我对OpenGL着色器模型的评论本质上优于DirectX.这是因为DirectX着色器是在开发时针对通用GPU模型编译的,而OpenGL着色器作为源代码保存,并在运行时由OpenGL驱动程序编译.因此,从理论上讲,驱动程序编写者可以利用GPU的特定(或运行旧程序时更新)功能,并创建可以比DirectX着色器运行更快的编译代码.这是一个小问题,但可能非常重要.
Ron*_*nes 12
Direct3D和OpenGL之间的性能差异接近于零.两者的特征集不是一对一映射,但它们很接近.OpenGL的主要专业是跨平台支持.
托管代码中与图形子系统相关的性能并不差.在每次调用DirectX时,SlimDX对完全本机代码的支付略有损失,但这并不严重.实际的惩罚取决于调用 - 对DrawRrimitive的调用总体上比调用SetRenderState要昂贵得多,所以百分比方式你最终会在SetRenderState调用上失去更多.SlimDX包含一个通常表现非常好的调优数学库,尽管你必须要小心一点.即使使用像NProf这样的junker工具,分析也可以非常快速地突出显示这些内容,因此修复并不困难.
总的来说,如果我们考虑通过D3D进行渲染的通用,完全最优的 C++和C#代码,C#版本可能在C++版本的10-15%之内.但这很难实现; 考虑通过在C#中工作节省多少时间,你可以将其应用于更高级别的图形优化,如果必须用C++构建整个事物,那么你可能根本就没有时间.即使你设法在C++中获得额外的10%,它也会在几个月内迅速缩小到5%,这时新一轮硬件会比以往更快地撕掉你的应用程序代码.我知道我会选择什么 - 这就是我开始写SlimDX的原因.
OpenTK具有类似的性能特征,但需要注意的是他们的数学库在某些地方相当慢.这是我与他们讨论过的一个实现错误,希望能在很长时间内修复.
OpenGL在过去与性能特征有关,但最终得到了修复.举一个例子,考虑可绑定的制服,其中Direct3D在OpenGL获得类似的机制之前具有更快的机制.除了有时支持不同的功能集之外,没有区别.
因此,除非您打算使用最新的GPU功能,否则我建议您使用OpenGL.可以肯定地说,OpenGL在与性能相关的功能方面落后的地方并不多.
顺便说一下,只有采取某些预防措施,C#和.NET才是独立于平台的.
归档时间: |
|
查看次数: |
10774 次 |
最近记录: |