Graphics 学习低级图形编程

Graphics 学习低级图形编程,graphics,Graphics,我对学习图形应用程序的不同抽象层很感兴趣 我看到了很多术语:在抽象的最高层次,我听到了诸如C#、.NET、pyglet和pygame之类的东西。再往下看,我听说了DirectX和OpenGL。还有DirectDraw、SDL、Win32 API和其他多平台库,如WxWidgets 我如何才能很好地了解其中一层的结束位置和下一层的开始位置?用C语言在Windows中创建窗口的“最低级别”方法是什么?C++怎么样?(一个代码示例将是神圣的。)在X11中呢?OpenGL和DirectX的Windows

我对学习图形应用程序的不同抽象层很感兴趣

我看到了很多术语:在抽象的最高层次,我听到了诸如C#、.NET、pyglet和pygame之类的东西。再往下看,我听说了DirectX和OpenGL。还有DirectDraw、SDL、Win32 API和其他多平台库,如WxWidgets

我如何才能很好地了解其中一层的结束位置和下一层的开始位置?用C语言在Windows中创建窗口的“最低级别”方法是什么?C++怎么样?(一个代码示例将是神圣的。)在X11中呢?OpenGL和DirectX的Windows实现是否构建在Win32 API之上?我从哪里开始学习这些东西

还有一个问题,建议在哪里。Linux呢?有类似的书吗

我知道这是非常低级的,而且有许多更友好的工具可用,但我想至少了解表面下发生的事情的基本情况。虽然我很想一开始就把窗口和向量扔掉,但从pygame这样的东西开始对我来说太高了;我真的需要做一个完整的概念电路,你如何在电脑上画东西


我当然会很欣赏对书籍和资源的建议,但我认为如果这个问题的答案充满了许多不同的方式,可以通过不同的图形编程方法进入“Hello world”,那将是非常酷的。CC++?使用OpenGL?使用DirectX?在Windows XP上?在Ubuntu上?也许我要求太多了。

是一个很好的起点。另外,你可以免费下载

马上,我会说“你要求得太多了。”从我的一点经验来看,我建议你先阅读一些教程,或者在directX或OpenGL上买一本书。比这低一点是相当复杂的。我在OGL或DX中看到的大多数书籍都有很好的介绍,解释了函数/类的作用

一旦你掌握了其中的一个诀窍,你可以随时深入图书馆,看看他们到底在做什么来降低价格


或者,如果你真的,绝对必须学习最低水平。。。阅读上面文章中的书。

如果你真的想从底部开始,那么画一条线是最基本的操作。计算机图形学只是在网格(屏幕)上填充像素,所以你需要计算出要填充的像素,以得到一条从(x0,y0)到(x1,y1)的线


查看以了解所涉及的内容。

请参阅开放式GPU文档部分:


HTH

libX11是X11的最低级别库。我相信opengl/directx直接与驱动程序/硬件对话(或模拟不支持的操作),因此它们将是最低级别的库


如果您想从非常低级的编程开始,请查找VGA的x86汇编代码,并启动dosbox或类似软件的副本。

要成为一名优秀的图形和图像处理程序员,不需要这些低级知识,但我不喜欢对我所使用的软件内部一无所知。我认为有两种方法可以做到这一点——从高层往下,或者从底层往上

自上而下是跟踪动作如何从高级图形操作(如绘制圆)跟踪到硬件。熟悉OpenGL。然后,Mesa的源代码(免费!)提供了一个如何在软件中实现OpenGL的窗口。Xorg的源代码将是下一个,首先查看操作如何从API调用通过客户端传递到X服务器。最后,深入研究与硬件接口的设备驱动程序

自下而上:构建自己的图形硬件。想想它可以连接到计算机的方式——如何通过几个字节大小的寄存器处理大量像素,DMA将如何工作。编写一个设备驱动程序,并尝试设计一个可能对应用程序程序员有用的图形库


自底向上的方法是我在几年前学会的,当时速度慢的8位微处理器是可能的。电路和软硬件接口的直接经验使我对困难的设计决策有了很好的理解,例如,使用智能硬件绘制矩形、在设备驱动程序中绘制矩形或更高级别。这些都不是实用的日常价值,而是为理解新技术提供了知识基础。 在MSWindows上很容易:您可以使用API提供的内容,无论是标准的windows编程API还是DirectX系列API:这就是您所使用的内容,它们都有很好的文档记录

在X windows环境中,您可以使用提供的任何X11库。如果你想了解在X上开窗的原理,我建议你这样做,尽管很多人告诉你不要这样做,但这将真正帮助你理解X下的图形和开窗。你可以阅读关于X编程的文档(谷歌提供)。(完成此练习后,您将欣赏更高级别的库!)

除上述之外,在绝对最低的级别(不包括芯片级别),您可以调用切换到各种可用图形模式的中断-有几个-然后写入屏幕缓冲区,但对于这一点,您必须使用汇编程序,其他任何操作都会太慢。走这条路根本不便于携带

另一篇帖子提到了Abrash的《黑皮书》
——一个极好的资源


编辑:关于Linux编程的书:这是一个社区的东西,有很多关于如何编程的书;另外,找一个论坛,加入它,只要你表现得文明,你就会得到你所需要的所有帮助。

最低级别是图形卡的视频RAM。当计算机首次启动时,图形卡