我在某处读到有人要创建一个类似于 opengl 的光栅引擎来完全理解 opengl 的作用。
我的理解是你不能这样做,因为你的显卡上有opengl/directx,你不能使用其他任何东西作为你的图形核心。
我认为我的观点是不正确的,有人可以纠正它吗?
OpenGL 是处理图形的标准方式。它不仅仅作为独立的软件存在于显卡上。如果您的显卡具有 OpenGL 硬件加速,这意味着您的计算机可以将一些 OpenGL 命令发送到显卡并卸载 CPU 本来必须处理的工作——但这只是因为该卡已经预先设计用于OpenGL 标准。
如果您的卡上没有 OpenGL 硬件支持,那么所有内容都必须通过您的主处理器发送,而且通常不是最佳的。
OpenGL的实现其实有很多。有些是由 ATI 和 NVidia 等公司注入的硬件,它们提供自己的 opengl 实现,用于将 opengl 处理转发到卡。其他是基于软件的,例如开源 MESA。如果您运行的是不匹配的卡和游戏,例如 DirectX 卡和 OpenGL 游戏,那么您可能不得不使用纯软件实现进行渲染。
所以是的,纯软件实现是可能的,但不是最优的。但是,有时如果您需要动态访问和操作较低级别的图形信息,则需要软件实现。知道如何做到这一点是一项很棒的技能。
您仍然可以在某些情况下访问视频内存,并且可以执行 blitting,这是光栅实现的核心。编写自己的图形引擎作为学习工具是合理的,我什至会说它相当普遍。在计算机科学课程中,我们也编写编译器作为学习练习,即使知道它们与商业实现不匹配。