如何在c++中设置像素
How to set a pixel in C++?
我正在尝试创建自己的操作系统,我只是想知道是否有一种方法可以告诉BIOS在我的屏幕上用c++设置VGA像素。
C作为一种语言不提供任何内置的图形功能。如果你想要图形化,你必须使用一些特定于操作系统的库。
除此之外,现代操作系统通常不允许任何旧程序随意在内存中闲逛。相反,它们使用的是被称为驱动程序的中间工具,是的,还有图形库和api(如OpenGL)。
如果你真的想自己动手,那就找一个MS-DOS,找一些旧的VGA规格,从那里开始。
您可以打开给定的像素,但这需要特定于平台的代码,并且在操作系统或平台更改时可能无法移植。
我的理解是你想要直接访问屏幕缓冲区,中间没有阻止你。这就是你要走的路。
共同研究
在你的平台上,找出图形控制器,品牌名称和型号名称,如果你正在使用一个。在网上搜索图形控制器芯片上的数据表。最有可能的是,屏幕内存在芯片内部,不能被CPU直接访问。
接下来,了解如何访问图形控制器所在的板。您可以通过I/O端口或内存地址直接访问图形控制器芯片;或者您可能不得不使用中断系统。研究硬件
Linux
下载Linux内核的源代码发行版。找到图形驱动程序。搜索图形驱动程序中的代码,查看如何操纵图形控制器。
对于Linux,您必须编写自己的图形驱动程序并重新构建内核。接下来,您需要编写一个程序来访问驱动程序并打开像素。研究"Linux驱动API"。有一些关于编写Linux驱动程序和它们使用的标准API的书籍。
Windows使用相同的驱动程序概念。你必须编写自己的Windows驱动程序,并让操作系统知道你想要使用它。您的驱动程序将与图形控制器对话。有一些关于编写Windows驱动程序的书籍。在编写驱动程序之后,您将需要编写一个使用您的驱动程序的演示程序。
就显示而言,嵌入式系统从简单到复杂都有。这个最简单的嵌入式系统使用显示视图的内存。对该内存的任何写入都会立即反映在显示器上。
更复杂的嵌入式系统使用图形控制器来控制显示。你需要得到图形控制器上的数据表,弄清楚如何设置它,然后如何打开一个像素。
司机作家
驱动程序不是一件容易编写的东西。大多数驱动程序都是由专家团队编写的,需要几个月的时间来制作。随着新功能的加入,图形控制器芯片变得越来越复杂。驱动程序必须能够支持新功能和旧型号。这不是一个容易的问题。
如果你真的想直接访问一个像素,那就去吧。与使用现成的库相比,它可能需要更多的研究和努力。业内大多数人都使用OTS库或框架(如QT、wxWidgets和XWindows)。驱动程序只会因为性能原因或为了支持新的图形硬件而被重写或修改。驱动程序编写不是一项简单的任务,它需要高质量的开发过程以及验证策略。
祝你写像素好运。我希望你的图书馆能提供比现有的许多图形图书馆更好的东西。
- 如何在24位SDL_Surface上设置像素的颜色
- 在OpenCV中设置像素值(奇怪的结果)
- 将垫子的每个像素设置为某个值,如果它低于一个值?
- 使用视觉C++设置"Windows Form Application"中的像素值
- 如何在MFC中设置对话框的默认大小(以像素为单位)
- 在Nvidia NPP ImageCPU对象中设置像素值
- 调用 cvSet2D() 来设置图像的像素值返回值 0
- 在数组中设置像素颜色
- 如何将像素设置为cv::Mat对象中的值
- C++openGL-获取和设置像素的函数
- 如何在SDL_surface中设置像素
- 通过 C/C++ 使用 JPEG 像素格式在 v4l2 中设置/获取相机 JPEG 压缩质量
- 使用 BMP 作为高度图.如何访问像素颜色以设置高度
- 设置像素函数 [C++]
- 获取并设置像素的颜色
- 无法将大小 QMainWindow 设置为小于 200x100 像素
- 如何在Qimage中设置像素并保存更改
- 在Gdk::Pixbuf上获取像素值,使用Gdk::Cairo设置像素值
- OpenCV:如何设置像素的alpha透明度
- 如何在c++中设置像素