Opengl必须在windows上使用winapi来绘制图形吗



我知道在linux中,opengl可以直接使用视频内存。窗户是这样的吗?我不是在谈论opengl和窗口管理器的交互。我说的是绘制图元、图像等。

也就是说,问题是opengl是使用winapi函数来绘制形状,还是直接使用内存来实现这些函数。

如果它可以绕过winapi,那么我如何编写类似的本地代码来在windows窗口中绘制像素呢?(没有winapi或外壳(

我不知道你说到底是什么意思

我知道在linux中,opengl可以直接使用视频内存。

OpenGL在Linux上的工作方式与在Windows上的工作方法没有根本区别。在Windows和Linux上,OpenGL的实现通常由可安装客户端驱动程序(ICD(提供。ICD通过显示驱动程序界面而不是普通的Windows API与操作系统交互。虽然OpenGL有软件实现/仿真层(默认情况下Windows包括一个(,但ICD通常由图形卡的供应商提供。使用OpenGL时,操作系统只需加载ICD,OpenGL API调用基本上会直接进入ICD,然后ICD将执行实际绘制。通常,这将涉及通过专有协议与图形卡进行对话。

如果你想在软件中做一些简单的3D图形来了解它的工作原理,我建议你只使用Windows API或其他任何你能在屏幕上绘制像素的工具,并从做一些简单三角形光栅化开始。编写自己的OpenGL软件实现当然是可能的,但就必须实现的功能量而言,这很可能是一种巨大的过度消耗。虽然当目标是了解3D图形如何工作的基本原理时,这样的软件渲染项目可能是一种很好的实践,但不要指望结果在性能方面具有竞争力。无论你做什么,CPU软件实现都不会达到现代设备上实际应用程序通常期望的性能水平。要做到这一点,你必须利用你的GPU所能提供的硬件加速。然而,编写使用GPU进行硬件加速的OpenGL实现是一项艰巨的任务。所有主要供应商(AMD,Intel,NVIDIA(的GPU都有可用的开源驱动程序,如果你真的想了解更多,你可以看看…

最新更新