Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C+上显示图形+;没有第三方库的程序?_C++ - Fatal编程技术网

C++ 如何在C+上显示图形+;没有第三方库的程序?

C++ 如何在C+上显示图形+;没有第三方库的程序?,c++,C++,我似乎找不到我正在寻找的答案,否则我可能无法理解这一点。不管怎样,我都感到困惑 当我试图找出,总是有关于C++控制台编程的视频,这让我很恼火,因为我现在想离开控制台。我知道如何创建一个简单的窗口,但不知道如何在上面显示真实的图形。我听说过像OpenGL和DirectX这样的东西,但这让我想知道,这些库在它们的源代码中有什么,为什么在程序中绘制实际的形状和其他东西?它们在代码中使用什么C++?简要地说,图形API在其源代码中有哪些与图形硬件的交互,并告诉它在内存中写入像素值。最终,这通常是以间接的

我似乎找不到我正在寻找的答案,否则我可能无法理解这一点。不管怎样,我都感到困惑


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

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

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

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

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


但是,就像一切一样,它是可以学习的。如果你对在计算机上绘制图形感兴趣,你应该从寻找一个关于这个主题的好来源开始,网上有很多。然后开始玩API。OpenGL是一个很好的起点,但也有基于它的开源库,因为绘制多边形和其他东西涉及计算的许多其他方面。OgRe3D出现在脑海中,但也有其他一些。

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