如何开始编程graphicsWindows程序?

经过几分钟的search后,我了解到Win32 API是编写graphics化Windows程序的最低级别的方法。 这是真的? 有没有办法把东西直接画到video缓冲区? 演示编码器如何编写演示?

无论如何,我知道一点C,这似乎是编写Win32程序的首选方式,而且我有兴趣坚持以最低级别和最灵活的方式编写Windows程序。

我听说过很多不同的框架,只是从微软自己,.NET,Windows窗体,WPF,MFC,WTL,CLR,ATL。 (有人可以澄清其中哪一个实际上依赖于另一个?)

那当然还有跨平台的工具包,WxWidgets,GTK,Qt,Mono,tk等等。

如果我只想在OpenGL中编写完整的界面呢? 一切确实取决于Win32 API吗? 我必须编写一些使用Win32 API调用的代码来至less创build一个OpenGL的窗口来使用吗?

你基本上在一个问题上问了这么多问题,我不知道你想要什么。 但是,我会尽我所能做出合理的假设,并简要回答你所有的问题。

Win32 API不仅是图形程序的最低级别的API,而且还是任何窗口程序。 它离内核最近,但是没有必要写入它。

我在这里假设你想做一个图形花式的应用程序。

Win32 API有一个名为GDI的图形设备接口,您可以使用它与图形缓冲区进行交互,但是速度很慢。 那么你可以使用OpenGL或者DirectX。 此外,MFC是.NET之前,你用它来创建标准的Windows GUI程序。 然后来到.NET,更慢但更好设计。

是的,有很多跨平台选项,就像你提到的那样,你也可以使用它们,但都取决于你想要做什么。

现在,如果你想写一个纯粹的图形应用程序,如游戏或有光泽的图形花哨的演示,你应该真的不关心Win32,MFC,.NET等,因为当你想创建这样的应用程序,你只使用最低限度的Win32创建一个框架窗口,然后您的OpenGL或DirectX接管控制。 但是,当然,如果它是一个窗口应用程序,它肯定会在那里使用Win32 API,而不是你必须关心它,但:)

如果您的整个应用程序将是OpenGL,则可以使用名为GLUT的库。

http://www.opengl.org/resources/libraries/glut/

是的,Win32是最低级别的API。 它封装了所有的操作系​​统对象和API,以及公开的窗口API,所以你可以创建你的OpenGL窗口等等。其他的东西都建立在它之上。

您不能像Amiga 500上的演示编码器那样直接绘制视频内存; 自从90年代中期以来,你一直无法安全地获得指向视频输出缓冲区的指针。 🙂

如果您想在最低级别学习Windows,请在C中获取Charles Petzold 编程窗口的副本。 它绝对是你需要的一切。

如果你只想打开一个窗口来放入GL代码,那么你应该很容易找到相关教程。

您可能需要做一些样板材料来创建Windows应用程序(注册窗口类等)。 在你创建你的应用程序类后,你可以自由地做你想做的事情。 你不能直接访问视频内存(这是件好事),但是有DirectX和OpenGL。