C++ 使用Windows API和C++;?

C++ 使用Windows API和C++;?,c++,windows,winapi,graphics,2d,C++,Windows,Winapi,Graphics,2d,我即将开始我的大学课程单元项目。我想让一些东西像小行星,复古2D游戏,在C++。< /P> 我可以使用类似于SFML的东西来实现这一点,这似乎是合乎逻辑的。但是,我不能使用SFML,因为默认情况下,这些库在Windows上不可用 < >要求:我的C++代码必须复制并粘贴到任何Windows PC(已经安装了VisualStudio),然后从VisualStudio./P>编译/运行。 我以前从未使用过Windows API,但是我觉得我可以用它打开一个窗口并在窗口中绘制一些2d图形。我说得对吗?

我即将开始我的大学课程单元项目。我想让一些东西像小行星,复古2D游戏,在C++。< /P> 我可以使用类似于SFML的东西来实现这一点,这似乎是合乎逻辑的。但是,我不能使用SFML,因为默认情况下,这些库在Windows上不可用

< >要求:我的C++代码必须复制并粘贴到任何Windows PC(已经安装了VisualStudio),然后从VisualStudio./P>编译/运行。 我以前从未使用过Windows API,但是我觉得我可以用它打开一个窗口并在窗口中绘制一些2d图形。我说得对吗?基本上,这就是我所需要做的:打开一个窗口,然后在上面画一些线

这不是一个“你能帮我做作业吗”类型的问题。如果这是我需要的工具,请有人给我指出开始使用WinAPI的正确方向,如果没有,还有什么我可以使用的吗?一些OpenGL库怎么样?OpenGL 2.0或类似的库是否与Visual Studio捆绑在一起

(如果是重要的,我认为我们使用的是VS2010。)


为大家干杯,

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


但是,如果您希望通过DirectX进行硬件渲染,您可以尝试使用DreamSpark订阅的大学免费提供的Mircrosoft XNA Game Studio 4.0。本教程仅介绍创建图形化Win32应用程序所需的一切:


请注意,某些较旧版本的visual studio express无法编译windows应用程序,除非安装了windows sdk。如果您的VisualStudio安装是这样的,那么您将无法按照列出的要求制作任何图形

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

< >要求:我的C++代码必须复制并粘贴到任何Windows PC(已经安装了VisualStudio),然后从VisualStudio./P>编译/运行。 您知道,您可以简单地将您使用的任何库的代码包含到您的项目中。因为像libsdl这样的项目使用许可证,所以您可以这样做。不过,我不确定这是否会违反你的“规则”

使用默认的VisualStudio安装,您不会得到太多。您完全可以使用纯winapi创建一个窗口并在其上绘制一些东西。使用类似这样的工具,您可以轻松地自己进行全软件渲染

高级OpenGL功能需要包装库(如),但您可以自己初始化扩展和高级功能。地震3号引擎就是这么做的,所以你们可以这样做

使用DirectX很可能是毫无疑问的,因为它通常需要安装SDK。您可以将所需的库/头复制/粘贴到项目的子目录中,但同样,这是否会违反“规则”还不清楚

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

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

底线:

如果您想要完整的软件渲染,请使用winapi创建窗口,为“屏幕”(RGB格式)分配2d缓冲区,并使用SetDIBitsToDevice或StretchDIBitsToDevice将其逐帧blit到窗口。如果有可用的windows头文件,它几乎可以在任何地方工作和编译

你也可以试着用它来画线等等,但我不确定这对游戏有多好用。我已经有一段时间没有使用GDI了,但我认为如果你不小心的话,你会得到明显的闪烁


如果需要高级特性(例如,对于某些人来说,编写绘制纹理三角形或旋转2D精灵的软件绘制程序将是困难的)考虑使用OpenGL并使用WGLGETPROCEDATION加载缺失的函数。然而,如果你的大学(出于某种原因)有古老的(或有缺陷的)硬件,你可能希望自己只使用旧版本的OpenGL(OpenGL 1.1)。原因是OpenGL 1.1由软件OpenGL渲染器支持,如果在使用硬件加速时出现某种问题,将启用该渲染器

这是一个需要安装的附加组件,还是“随”Visual Studio安装而来?我看到您进行了编辑-我预计可能以30FPS或类似速度绘制100行?也许我不需要硬件渲染?是的,你安装了框架,然后当你创建一个新项目时,你可以选择
newxna game
或类似的东西。啊,那可能是不允许的(爱德华鸟100行在30FPS可以不用硬件渲染。我想你不需要它。毕竟,OGRE 3D有一个C++ API。微软提供了一个OpenGL 1.1的参考实现,它在GDI之上,用于任何没有硬件ICD的系统。我无法想象任何人教OpenGL 1,它甚至没有特克斯。True objects:-\@AndonM.Coleman:我知道1.0不支持纹理,我只是忘记了在出现问题时默认使用哪个版本的GL windows-1.0使用纹理作为扩展(或其他东西)或1.1。由于未知原因,我遇到了OpenGL无法使用硬件加速进行初始化的问题(好几次)。我从来没有想到这个问题。