2012-06-16 68 views
6

我正在研究linux和圖形API,但是我很困惑如何在操作系統中實現opengl。 它只是一組使用內核與您的顯卡交談哪些像素着色或不着色的庫? 如果是這樣,那麼我不知道管道在哪裏 - 3D場景如何光柵化以及着色器如何影響幾何。OpenGl如何在操作系統中實現?

又是如何得出的GPU可以從兩個DX和OGL支持Shader語言? - 着色器語言實際上適合哪裏? - 它們是在運行時編譯還是解釋的?

我沒有與圖形API非常多的經驗是自己儘管使用幾種遊戲引擎 - 通常是細節問題遠遠失去了幾個抽象層。

+1

你可以有看看這一系列的博客文章,可能會啓發你:http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-1/ – rotoglup

+2

可能的重複[OpenGL如何在最低級別工作?](http://stackoverflow.com/questions/6399676/how-does-opengl-work-at-the-lowest-level) – datenwolf

回答

0

我不能談論的API是如何實現的。

但我從着色器編譯經驗知道。所以你編譯它們並將它們發送到你的GPU執行。

0

至少在最典型的圖形卡,大多數的OpenGL管道的(固定的或可編程的)在圖形硬件本身實現。對於DirectX來說更是如此(即,DirectX在OpenGL中缺少一些功能,而目前的硬件不直接支持DirectX)。

着色器編譯正常。顯卡有一個專用處理器(或者通常不止一個),因此編譯器以着色器語言輸入輸入,並將其轉換爲該處理器的彙編語言,就像C編譯器爲CPU所做的那樣。支持不同的輸入語言是不是一大堆從單一的CPU支持的C,C++,Pascal中,Fortran語言,COBOL輸入不同等