我正在尝试创建自己的操作系统,我只是想知道是否有办法告诉BIOS在我的屏幕上用C++设置VGA像素。如何在C++中设置像素?
回答
您可以打开给定的像素,但这需要特定于平台的代码,并且在操作系统或平台更改时可能无法移植。
我的理解是您希望直接访问屏幕缓冲区,而无需停止任何操作。这是要走的路。
共同研究
在你的平台上,找出图形控制器,品牌名称和型号名称,如果您使用的一个。在网络上搜索图形控制器芯片上的数据表。屏幕内存很可能位于芯片内部,并且不能由CPU直接访问。
接下来,了解如何访问图形控制器所在的电路板。您可以通过I/O端口或内存地址直接访问图形控制器芯片;或者你可能不得不使用中断系统。研究硬件。
Linux
下载Linux内核的源代码发行版。找到图形驱动程序。在图形驱动程序中搜索代码以查看图形控制器如何被操纵。
对于Linux,您将不得不编写自己的图形驱动程序并重建内核。接下来,您需要编写一个访问您的驱动程序并打开像素的程序。研究“Linux驱动程序API”。有些书可用于编写Linux驱动程序和他们使用的标准API。
Windows
Windows使用相同的驱动程序概念。您将不得不编写自己的Windows驱动程序,并让操作系统知道您想要使用它。您的驱动程序将与图形控制器通信。有关于编写Windows驱动程序的书籍。编写驱动程序后,您需要编写一个使用驱动程序的演示程序。
嵌入式系统
嵌入式系统的范围从简单到复杂,只要显示器走。这个最简单的嵌入式系统使用显示器查看的内存。对该内存的任何写入都立即反映在显示屏上。
更复杂的嵌入式系统使用图形控制器来控制显示。您需要在图形控制器上获取数据表,了解如何设置,然后如何打开像素。
驱动程序作家
驱动程序并不是一件容易的事。大多数司机都是由专家组撰写的,需要数月的时间才能制作出来随着新功能的添加,图形控制器芯片变得越来越复杂。驱动程序必须能够支持新功能和较旧的型号。不是一个简单的问题。
摘要
如果您确实想直接访问像素,请继续。它可能需要更多的研究和努力,使用一个现成的(OTS)库。业内大多数人使用OTS库或框架(如QT,wxWidgets和XWindows)。驱动程序仅出于性能考虑而被重写或修改,或支持新的图形硬件。驾驶员写作不是一项简单的任务,需要一个高质量的开发过程以及一个验证策略。
祝你好运写你的像素。我希望你的图书馆有比现有的许多图形库更好的东西。
C作为一种语言不提供任何内置的图形功能。如果你想要图形,你必须使用一些操作系统特定的库。
除此之外,现代操作系统通常不允许任何旧程序在内存中徘徊,但它想要的。相反,他们使用称为驱动程序的中间体,以及图形库和API(如OpenGL)。
如果你真的想自己做一个MS-DOS的副本,并挖掘一些旧的VGA规格,并从那里开始。
我想只设置一个像素 – bashcommando
我可以使用内联汇编设置像素吗? ? – bashcommando
@ user3140258:不,图形卡控制屏幕,操作系统控制图形卡。您唯一的选择是通过库调用与操作系统/图形卡通话。比如... OpenGL。这是我们可以访问的最低层。 –
- 1. Android:如何在设备像素中设置WebView尺寸?
- 2. 如何设置JTextField的像素大小
- 3. 如何设置像素坐标?
- 4. 如何在目标c中设置图像位置programaticall?
- 5. HLSL在像素着色器中设置像素位置以控制像素在纹理中的最终位置
- 6. 在Android Rect中设置像素颜色
- 7. 如何设置QImage的像素颜色为RGB888图像Qt中
- 8. 如何在具有特定RGB的形状中设置像素?
- 9. 如何在libavcodec中设置解码像素格式?
- 10. 如何在XNA中获取和设置像素数据?
- 11. 如何根据黑莓手机中的设备设置像素?
- 12. 如何设置像素高度然后自动设置
- 13. 如何在C++ win32 API中设置对话框中的图像?
- 14. Xamarin在c中设置元素重量#
- 15. C++在Struct中设置元素Array = NULL
- 16. 如何访问在C++中设置的对的元素
- 17. 如何设置特定值到Java中的任何像素?
- 18. 如何在c#中动态设置按钮图像的大小?
- 19. 如何在矩形中设置图像?
- 20. 如何在asp.net中设置bg图像
- 21. 如何在CheckBoxPreference中设置图像
- 22. 如何在wxStatusBar中设置图像?
- 23. 如何在LibSlideMenu中设置图像?
- 24. 如何在ImageView中设置图像?
- 25. 如何在Android ImageView中设置图像
- 26. 如何在Android中设置图像
- 27. 如何设置在C + +
- 28. 在openCV中设置某个图像中的像素的RGB值
- 29. EMGUCV最快设置像素
- 30. UIImage像素设置RGB值
您无法像在20年前的MSDOS下那样直接在Linux下访问屏幕内存。 –
设置像素...在哪里?如果不使用“任何一个”,这个问题甚至都没有意义。 –
我可以在内联程序集中做到这一点吗? – bashcommando