如何在C ++中设置像素?

时间:2014-03-13 20:17:07

标签: c++ graphics

我正在尝试创建自己的操作系统,我只是想知道是否有办法告诉BIOS在我的屏幕上用C ++设置VGA像素。

2 个答案:

答案 0 :(得分:3)

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

除此之外,现代操作系统通常不允许任何旧程序在内存中徘徊但是它想要。相反,他们使用称为驱动程序的中间体,是的,图形库和API,如OpenGL。

如果你真的想自己动手,可以获得MS-DOS的副本并挖掘一些旧的VGA规格并从那里开始。

答案 1 :(得分:1)

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

我的理解是你希望直接访问屏幕缓冲区之间没有任何阻止你。这是要走的路。

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

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

<强>的Linux
下载Linux内核的源代码发行版。找到图形驱动程序。搜索图形驱动程序中的代码以查看图形控制器的操作方式。

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

<强>窗
Windows使用相同的驱动程序概念。您必须编写自己的Windows驱动程序,并让操作系统知道您要使用它。您的驱动程序将与图形控制器通信。有关于编写Windows驱动程序的书籍。编写驱动程序后,您需要编写一个使用驱动程序的演示程序。

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

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

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

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

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