请注意,除非安装了 windows sdk,否则某些旧版本的 Visual Studio Express 无法编译 windows 应用程序。如果您的 Visual Studio 安装是这种情况,那么您将无法按照您列出的要求制作任何图形。
请有人指出我开始使用 WinAPI 的正确方向
当然。
要求是我的 c++ 代码必须复制并粘贴到任何 Windows PC(已安装 Visual Studio)上,然后从 Visual Studio 编译/运行。
您知道,您可以简单地将您使用的任何库的代码包含到您的项目中。因为像 libsdl 这样的项目使用许可许可证,所以您可以这样做。不过,不确定这是否会违反您的“规则”。
使用默认的 Visual Studio 安装,您不会得到太多。您绝对可以使用纯 winapi 创建一个窗口并在其上绘制一些东西。使用SetDIBitsToDevice之类的东西,您可以轻松地自己完成完整的软件渲染。
高级 OpenGL 功能需要包装库(如GLEW),但您可以自己初始化扩展和高级功能。Quake3 引擎做到了,所以你可以这样做。
使用 DirectX 很可能是没有问题的,因为它通常需要安装 SDK。您可以将所需的库/头文件复制/粘贴到项目的子目录中,但话又说回来,尚不清楚这是否会违反“规则”。
OpenGL 2.0 或类似的库是否与 Visual Studio 捆绑在一起?
默认 OpenGL 标头支持 1.1 版或类似的版本。但是,您可以使用wglGetProcAddress
. 您也可以在代码中自己声明缺失的常量。值不值,那就另当别论了。
底线:
如果您想要完整的软件渲染,请使用 winapi 创建窗口,为“屏幕”(RGB 格式)分配 2d 缓冲区,并使用 SetDIBitsToDevice 或 StretchDIBitsToDevice 每帧将其 blit 到窗口上。如果 Windows 标头可用,那么它几乎可以在任何地方工作和编译。
您也可以尝试使用GDI 例程来绘制线条等,但我不确定这对游戏的效果如何。我已经有一段时间没有使用 GDI 了,但我认为如果你不小心的话,你会得到明显的闪烁。
如果您需要高级功能(例如,对于某些人来说,编写可以绘制纹理三角形或可以旋转 2d 精灵的软件渲染例程会很困难)考虑使用 OpenGL 并使用 wglGetProcAddress 加载缺少的函数。但是,如果您的大学(出于某种原因)拥有陈旧(或故障)的硬件,您可能希望将自己限制在旧版本的 OpenGL(OpenGL 1.1)上。原因是 OpenGL 1.1 由软件 OpenGL 渲染器支持,如果使用硬件加速出现某种问题,则会启用该渲染器。