二维(或三维)graphics编程使用Windows API与C + +?

我即将开始我的大学课程单元的项目。 我正在寻找一些有点像c ++中的小行星,复古的2D游戏。

我可以使用类似SFML的东西来做到这一点,这似乎是合乎逻辑的事情。 但是我不能使用SFML,因为这些库在Windows上默认不可用。

要求是我的c ++代码必须复制并粘贴到任何Windows PC上(已安装Visual Studio),然后从Visual Studio编译/运行。

我从来没有使用Windows API,但是我感觉我可以用它来打开一个窗口,并在窗口中绘制一些2Dgraphics。 我对么? 基本上,这是我需要做的一切:打开一个窗口,然后画一些线。

这不是一个“你能为我做作业”types的问题吗? 如果这是我需要的工具,请有人指出我正确的方向开始使用WinAPI,如果不是,我可以使用其他东西吗? 什么样的OpenGL库? OpenGL 2.0或与Visual Studio捆绑在一起的类似库?

(如果是重要的,我想我们正在使用VS 2010)

欢呼大家,

你可以打开一个窗口,创建一些画布并在其上绘制,但是我不知道是否由软件或硬件渲染。 在你的情况下,如果它是一个非常小的游戏,你可能不需要硬件渲染。

但是,如果您想要通过DirectX硬件渲染,则可以尝试Mircrosoft XNA Game Studios 4.0 ,它可以免费获得DreamSpark订阅的大学。

本教程仅介绍创建图形化Win32应用程序所需的一切:

http://www.winprog.org/tutorial/

请注意,除非安装了Windows sdk,否则某些旧版本的Visual Studio Express无法编译Windows应用程序。 如果您的视觉工作室安装是这种情况,那么根据您列出的要求,您将无法完成任何图形。

请有人指出我正确的方向开始使用WinAPI

当然。

要求是我的c ++代码必须复制并粘贴到任何Windows PC上(已安装Visual Studio),然后从Visual Studio编译/运行。

你知道,你可以简单地在你的项目中包含你使用的任何库的代码。 因为像libsdl这样的项目使用宽松的许可证,你可以这样做。 不知道这是否会打破你的“规则”,但。

使用默认的视觉工作室安装,你不会得到太多。 你绝对可以创建一个窗口,并用纯winapi画一些东西。 使用像SetDIBitsToDevice这样的东西,你可以很容易地完成自己的软件渲染。

先进的OpenGL功能需要包装库(如GLEW ),但你可以自己初始化扩展和高级功能。 Quake3引擎做到了,所以你可以这样做。

使用DirectX最可能是没有问题的,因为它通常需要安装SDK。 您可以将所需的库/头文件复制/粘贴到您的项目的子目录中,但是再次,不清楚这是否会打破“规则”。

OpenGL 2.0或与Visual Studio捆绑在一起的类似库?

默认OpenGL头支持版本1.1或类似的东西。 但是,您可以使用wglGetProcAddress加载缺失的函数。 你也可以在代码中自己声明缺少的常量。 不管它是否值得,是另一回事。

底线:

如果你想要完整的软件渲染,使用winapi创建窗口,使用SetDIBitsToDevice或者StretchDIBitsToDevice为每个窗口分配2d缓冲区作为“屏幕”(RGB格式),并将其闪烁到窗口上。 这将工作和编译几乎任何地方,如果Windows头可用。

你也可以尝试使用GDI例程来绘制线条等,但是我不确定这对于游戏有多好。 我有一段时间没有使用GDI,但是如果你不小心的话,我认为你会明显的闪烁。

如果您需要高级功能(例如,对于某些人来说编写可以绘制纹理三角形的软件渲染例程或者可以旋转二维精灵将是困难的)考虑使用OpenGL并使用wglGetProcAddress加载缺失的函数。 然而,如果你的大学(由于某种原因)有古老的(或错误的)硬件,你可能想限制自己的旧版本的OpenGL(OpenGL 1.1)。 原因在于OpenGL 1.1被软件OpenGL渲染器所支持,在使用硬件加速时会遇到一些麻烦。