opengl - XNA, 直接 X , OpenGL

标签 opengl directx xna

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。




9年前关闭。




很久以前我就一直想提供游戏编程,但一直没有实现,我终于决定在此之前提供它。我决定尝试创建一个简单的 2D 平台游戏。我很快就玩了 XNA,我确实喜欢它。我正在寻找的是 XNA、directx、OpenGL 之间的比较。主要是他们之间的优势和劣势。在过去的 4 年里,我一直是 .net 开发人员,这主要是我的知识。

最佳答案

如果您想使用 Direct X,请向 Win32 和 COM 打个招呼,成为您最好的新伙伴。您将在早期花费大量时间学习 win32 API 的来龙去脉。 DirectX with Win32 为您提供声音、游戏输入和图形显示所需的所有功能。您还将使用 C 或 C++ 进行编写,并且您将学习有关内存管理和 C 思维方式的所有知识 - 不是您应该考虑轻易放弃的东西。学习和使用 C 作为主要项目的语言可以非常有启发性,并使您感谢现代编程语言的功能和设计元素。在这里,您实际上并没有被迫使用 C 或 C++ 进行开发; Direct X 有各种 .NET 包装器和其他语言包装器,但如果您有 .NET 经验,您不妨使用为 .NET 创建的框架:XNA。

XNA 是一套更新的、基于 .NET 的工具。它提供了许多与直接使用 Win32 和 DirectX 相同的功能(声音、输入等),但在托管平台上是 native 的。对于大多数游戏(尤其是刚开始的游戏),您可以使用 XNA 游戏获得出色的帧率(即使 native 应用程序可以为您提供更多),并且非常适合学习游戏开发的来龙去脉——您可以真的不会出错。您将需要的大多数基本数据结构(四叉树/八叉树、模型- View - Controller 架构、事件处理、程序结构)您仍然需要自己学习和实现,而在 .NET 中进行最当然比在 C 和 C++ 中更容易。如果您有 Xbox 360、XNA 社区游戏,那么作为额外的奖励 can, with some work, be released through Xbox Live marketplace.基本上,作为 .NET 开发人员,您可能会在这里感到最自在。

OpenGL 是一个用于绘制多边形的跨平台库。它具有与 Direct X 不同的框架和 API,并且不提供任何操作系统交互工具。有一些软件包可以让您以多种不同的语言在 OGL 中进行编程。然而,正如其他人所说,这可能与使用 Win32 和 DirectX 编写一样多。对于图形以外的其他功能(键盘、鼠标、操纵杆、音频),您可以考虑使用像 SDL 这样的框架。一些缺少的 DirectX 功能。图书馆周围有一个相当不错的社区,如果您走这条路,可以为您提供指导和提示。

更多关于这方面的想法可以在一篇几乎相同的文章中找到,这里:Suggested Gaming Platform to Learn direct-x, C Open GL, or XNA .

关于opengl - XNA, 直接 X , OpenGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578705/

相关文章:

opengl - 如何在openGL 3.1中使用glPixelTransfer、glTexEnv和glRasterPos?

c++ - Direct3d 中的 vector 文本渲染系统

opengl - 在 OpenGL 中访问像素的最佳方法?

linux - 无法在 Mac OS X El Capitan 上编译 CUDA + OpenGL 程序

c++ - DXGI 集成适配器

c# - 使用 A* 并仍然避免碰撞?

c# - 为 XNA C# 游戏制作带有补丁/更新的单文件可视化可定制安装程序

c# - XNA 属性 Game.IsActive 不工作

c++ - 如何在 Qt5 中使 QOpenGLContext 成为当前没有表面的?

c++ - 'D3DRS_SEPARATEDESTALPHAENABLE' : undeclared identifier - even though it's mentioned in the DirectX comments?