OpenGl如何在操作系统中实现?

时间:2012-06-16 21:59:48

标签: opengl operating-system implementation

我正在研究linux和Graphical API,但是我对如何在操作系统中实现opengl感到困惑。 它只是一组库使用内核与你的显卡“对话”有关哪些像素是否着色? 如果是这样,那么我不知道管道的位置 - 如何对场景进行栅格化处理以及着色器如何影响几何体。

以及GPU如何支持DX和OGL的着色器语言? - 着色器语言实际上适合哪些? - 它们是在运行时编译还是解释?

尽管使用了几个游戏引擎,但我自己对图形API的使用经验并不多 - 通常,几个抽象层都会遗漏这些细节。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我无法谈论API的实现方式。

但我从经验中知道着色器是编译的。所以你编译它们并将它们发送到你执行它们的GPU。

答案 2 :(得分:0)

至少在大多数典型的图形卡上,大多数OpenGL管道(固定或可编程)都是在图形硬件本身中实现的。对于DirectX来说更是如此(即,DirectX在OpenGL中缺少相当多的功能,当前硬件不直接支持)。

通常会编译着色器。显卡有一个特殊用途的处理器(或者,通常不止一个),因此编译器以着色器语言获取输入并将其转换为该处理器的汇编语言,就像C编译器为CPU做的那样。支持不同的输入语言与支持C,C ++,Pascal,Fortran,Cobol等输入的单个CPU没有太大区别。