Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.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++中设置像素? 我正在尝试创建自己的操作系统,我只是想知道是否有一种方法告诉BIOS在C++中在我的屏幕上设置一个VGA像素。p>_C++_Graphics - Fatal编程技术网

如何在C++中设置像素? 我正在尝试创建自己的操作系统,我只是想知道是否有一种方法告诉BIOS在C++中在我的屏幕上设置一个VGA像素。p>

如何在C++中设置像素? 我正在尝试创建自己的操作系统,我只是想知道是否有一种方法告诉BIOS在C++中在我的屏幕上设置一个VGA像素。p>,c++,graphics,C++,Graphics,C作为一种语言不提供任何内置的图形功能。如果你想要图形,你必须使用一些特定于操作系统的库 除此之外,现代操作系统通常不允许任何旧程序在内存中随意移动。相反,他们使用称为驱动程序的中间层,是的,还有图形库和API,如OpenGL 如果你真的想自己动手做的话,那就买一份MS-DOS的拷贝,从旧的VGA规格开始吧。你可以打开给定的像素,但这需要特定于平台的代码,并且在操作系统或平台发生变化时可能无法移植 我的理解是,你想要直接访问屏幕缓冲区,而不需要任何东西来阻止你。走这条路 共同研究 在您的平台上,

C作为一种语言不提供任何内置的图形功能。如果你想要图形,你必须使用一些特定于操作系统的库

除此之外,现代操作系统通常不允许任何旧程序在内存中随意移动。相反,他们使用称为驱动程序的中间层,是的,还有图形库和API,如OpenGL


如果你真的想自己动手做的话,那就买一份MS-DOS的拷贝,从旧的VGA规格开始吧。

你可以打开给定的像素,但这需要特定于平台的代码,并且在操作系统或平台发生变化时可能无法移植

我的理解是,你想要直接访问屏幕缓冲区,而不需要任何东西来阻止你。走这条路

共同研究 在您的平台上,查找图形控制器、品牌名称和型号名称(如果您正在使用)。在web上搜索图形控制器芯片上的数据表。最有可能的情况是,屏幕内存位于芯片内部,CPU无法直接访问

接下来,了解如何访问图形控制器所在的板。您可以通过I/O端口或内存地址直接访问图形控制器芯片;或者您可能必须使用中断系统。研究硬件

Linux 下载Linux内核的源代码发行版。找到图形驱动程序。搜索图形驱动程序中的代码,查看图形控制器是如何操作的

对于Linux,您必须编写自己的图形驱动程序并重建内核。接下来,您需要编写一个程序来访问驱动程序并打开像素。研究Linux驱动程序API。有关于编写Linux驱动程序及其使用的标准API的书籍

窗户 Windows使用相同的驱动程序概念。您必须编写自己的Windows驱动程序,并让操作系统知道您想要使用它。您的驱动程序将与图形控制器对话。有一些关于编写Windows驱动程序的书。在编写驱动程序之后,您需要编写一个使用驱动程序的演示程序

嵌入式系统 嵌入式系统的范围从简单到复杂,就显示器而言。这个最简单的嵌入式系统使用显示视图的内存。对该内存的任何写入都会立即反映在显示屏上

更复杂的嵌入式系统使用图形控制器来控制显示。您需要在图形控制器上获取数据表,了解如何设置它,然后了解如何打开像素

驱动程序编写器 编写驱动程序并非易事。大多数驱动程序都是由专家团队编写的,需要几个月的时间才能完成。随着新功能的增加,图形控制器芯片变得越来越复杂。驱动程序必须能够支持新功能和旧型号。这不是一个容易的问题

总结 如果您真的想直接访问像素,请继续。使用现成的OTS库可能需要更多的研究和努力。业内大多数人使用OTS库或框架,如QT、wxWidgets和XWindows。仅出于性能原因或为了支持新的图形硬件,才重写或修改驱动程序。驱动程序编写不是一项简单的任务,需要一个高质量的开发过程以及验证策略


祝你好运写你的像素。我希望你们的图库能提供比现有的许多图形库更好的东西

你不能像20年前在MSDOS下那样直接在Linux下访问屏幕内存。。。哪里如果不使用这些,这个问题甚至没有意义。我可以在内联汇编中这样做吗?请阅读linux帧缓冲区。试试这个图书馆。它是开源的,所以如果你真的很好奇,你可以看看源代码,找出他们是如何做到的;我只想设置一个像素。我可以使用内联汇编设置一个像素吗?@user3140258:不,图形卡控制屏幕,操作系统控制图形卡。您唯一的选择是通过库调用与操作系统/图形卡通话。例如OpenGL。这是我们可以访问的最低层。我正在尝试创建一个库。一个可以直接与显卡对话的程序。我相信这应该可以通过bash脚本实现。对不起,我无法抗拒