有人有在 Windows 上编写专业 OpenGL 游戏的经验吗?对于 Mac,由于苹果的控制,操作系统看起来相当“统一”。对于windows,由于硬件不同,安装的驱动程序不同等……硬件基础似乎有很多不同的配置。
理论上,OpenGL 提供了一个将所有这些抽象出来的 API。在实践中,许多驱动程序经常出现错误并出现奇怪的情况——这是否是在 Windows 上开发游戏的问题?
谢谢!
有人有在 Windows 上编写专业 OpenGL 游戏的经验吗?对于 Mac,由于苹果的控制,操作系统看起来相当“统一”。对于windows,由于硬件不同,安装的驱动程序不同等……硬件基础似乎有很多不同的配置。
理论上,OpenGL 提供了一个将所有这些抽象出来的 API。在实践中,许多驱动程序经常出现错误并出现奇怪的情况——这是否是在 Windows 上开发游戏的问题?
谢谢!
您将面临的最大问题很简单:Windows 7 不附带硬件 OpenGL。如果用户不采取措施将默认视频驱动程序替换为来自供应商站点的更新版本,则他们拥有的唯一 OpenGL 支持将是 ~v1.0 软件渲染器。
两家最大的 GPU 供应商(Nvidia 和 ATI)都提供 OpenGL 3.x 驱动程序,这些驱动程序利用了现代硬件的最新功能。正如 Chris 指出的那样,主要问题是用户需要自己安装供应商提供的最新驱动程序,因为 Windows 附带了最基本的 OpenGL 支持(感谢微软,他们似乎竭尽全力削减 OpenGL 并推动DirectX)。所以只要他们有最近的驱动程序,你应该没问题。
驱动程序之间不可避免地存在一些(大多数是微小的)差异。例如,我注意到 Nvidia 的 GLSL 编译器比 ATI 的更挑剔,并且拒绝了一些原本可以正常工作的着色器代码。底线是您需要对两者进行测试(无论如何您都会这样做)。
gDebugger 工具似乎非常擅长跟踪性能问题。(不过,Xcode 附带的免费 OpenGL 工具非常棒。)
您需要glext.h
从OpenGL 扩展注册表中获取并确定您的应用程序的基本要求。如果您能提供帮助,您可能不希望根据可用的扩展来使用备用代码路径!正如 epatel 提到的,有一些库(例如 GLEW 和 GLEE)有助于扩展管理过程。我最终写了自己的,因为我不喜欢那些实现。
如果你还没有选择你的工具集的话,有很多用于 OpenGL 的引擎和场景图。
在此过程中,我发现了一些小错误,但几乎所有错误都很容易解决。这几天情况还不错。
我还没有在 Windows 上制作过专业的 OpenGL 游戏,但我认为一件重要的事情是向 OpenGL 驱动程序查询可用的功能(扩展)并处理这些功能。还有一个包可以使用GLEW库以独立于平台的方式处理这个问题。认为这是了解如何处理不同 OpenGL 功能的良好开端。
OpenGL Extension Wrangler Library (GLEW) 是一个跨平台的开源 C/C++ 扩展加载库。GLEW 提供了有效的运行时机制来确定目标平台支持哪些 OpenGL 扩展。OpenGL 核心和扩展功能在单个头文件中公开。GLEW 已经在各种操作系统上进行了测试,包括 Windows、Linux、Mac OS X、FreeBSD、Irix 和 Solaris。