OpenGL在操作系统中是如何实现的?

13
我正在研究Linux和图形API,但我对OpenGL在操作系统中的实现方式感到困惑。它只是一组使用内核与显卡“交流”的库吗?如果是这样的话,那么我不知道管道是什么-如何将3D场景光栅化并应用着色器效果于几何图形。
GPU如何支持DX和OGL的着色器语言?着色器语言实际上在哪里使用?-它们是编译还是在运行时解释?
尽管我使用了几个游戏引擎,但我对图形API没有太多经验-通常很多精细的细节都被多层抽象所掩盖。

2
你可以看一下这一系列的博客文章,它们可能会让你茅塞顿开:http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-1/ - rotoglup
3
可能是与OpenGL在最低层次上是如何工作的?重复的问题。 - datenwolf
可能是 OpenGL 最低层的工作原理是什么? 的重复问题。 - BDL
3个回答


1

至少在大多数典型的图形卡上,大部分OpenGL管线(固定或可编程)都是在图形硬件本身中实现的。这在DirectX中更为真实(即,DirectX缺少相当多的OpenGL功能,这些功能不受当前硬件的直接支持)。

着色器通常是编译的。图形卡有一个专用处理器(或者通常有多个),因此编译器将着色器语言的输入转换为该处理器的汇编语言,就像C编译器为CPU所做的那样。支持不同的输入语言与单个CPU支持C、C++、Pascal、Fortran、Cobol等输入并没有太大的区别。


-1

我不清楚API的实现方式。

但是从我的经验来看,着色器是需要编译的。因此,您需要将它们编译并发送到GPU上执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接