【问题标题】:How to display graphics on a C++ program without third party libraries? [closed]如何在没有第三方库的 C++ 程序上显示图形? [关闭]
【发布时间】:2017-06-25 03:38:33
【问题描述】:

我似乎无法找到我正在寻找的答案,或者我可能会错过理解这一点。无论哪种方式,我都感到困惑。

当我试图找出答案时,总是有关于 C++ 控制台编程的视频,这让我很恼火,因为我现在想摆脱控制台的东西。我知道如何创建一个简单的窗口,但不知道如何在其上显示真实的图形。我听说过 OpenGL 和 DirectX 之类的东西,但这让我想知道,这些库在它们的源代码中有什么可以在程序上绘制实际形状和其他东西?他们在代码中使用了哪些 C++ 函数?

【问题讨论】:

  • C++ 标准库中没有任何内容可以帮助您绘制图形。您的程序必然依赖于操作系统提供的 API 和/或第三方库(通常反过来包装 OS API)。
  • 你想重新实现那些库的相应部分吗?还是您希望得到一个适合您的答案?
  • DirectX 是 Windows 本身的一部分(由 MS 提供)。默认情况下,大多数 Windows 操作系统也可以使用 OpenGL。您可以通过自己喜欢的搜索引擎找到数百个可用的教程和现有问题。你的问题对于这个网站来说范围太广了。他们在代码中没有使用 C++ 函数;他们通过编写代码来实现绘图,主要使用 C 或 ASM(但有时使用 C++)。实现这些图形库的代码实际上有数十万行。
  • 这让我很恼火,因为我现在想摆脱控制台的东西 -- 您是否误解控制台程序是“玩具”程序?请注意,许多图形程序实际上只是实际运行的控制台程序周围的一个漂亮外壳。

标签: c++


【解决方案1】:

好吧,您可以制作自己的图形库。在这种情况下,我建议你拿一本好的数学书,准备做一些相当严肃的数学。您还必须立即开始学习 Windows 图形驱动程序和 Windows 内核开发,或 X11 API 和 Linux 内核编程,或所有这些。该文档可在网上获得。

OpenGL 和其他图形库所做的是提供一个相对简单的 API,这样您就不必重新发明轮子,并制作自己的库,而这可能需要数年时间才能获得接近它们的东西提供。

不要误会我的意思,即使有这些不错的 API,也有很大的空间可以发挥“魔法”的作用。计算机图形学本身就是一门艺术。掌握库提供的一些技术需要对所涉及的数学以及硬件提供的可能性有很好的了解。

但是,就像一切一样,它是可以学习的。如果您对在计算机上绘制图形感兴趣,您应该首先找到有关该主题的良好资源,网上有很多。并开始使用 API。 OpenGL 是一个很好的起点,但也有一些基于它的开源库,因为绘制多边形和其他东西涉及计算的许多其他方面。想到了 Ogre3d,但还有其他的。

【讨论】:

    【解决方案2】:

    简而言之,图形 API 的源代码是与图形硬件的交互,并告诉它在内存中写入像素值。最终,这通常以间接方式完成,例如设置场景图,并且图形 API 提供了与低级硬件系统一起工作的接口。

    【讨论】:

      猜你喜欢
      • 2011-07-30
      • 1970-01-01
      • 2013-07-12
      • 2010-09-26
      • 2018-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多