glx
是x window
的乙個擴充套件,按我的理解,它是專門為
x window
實現3d
渲染而開發的乙個擴充套件。
x window
沒有開發自己的
3d渲染的實現,而是使用了
mesa
(不準確的說是
opengl
的一種實現),為了實現
x window
與opengl
的結合,制定了
glx標準。
glx的實現主要有兩個版本,乙個是基於
xorg
的,乙個是基於
xfree86
的,兩者差別不大,下面我們討論的都是基於
xfree86
的實現。
一、x window與openggl的結合的思路
x window
走的是2d
的path
,而opengl
走的是3d
的path
,那麼兩者怎麼樣才能有效地結合在一起,使原本走
2d path
的x window
具有3d
的效果呢?
x window
採用的方法就是由它自己建立
drawable
,然後把
drawable
交給opengl
來渲染,再由
opengl
將渲染結果顯示到螢幕上,從而使
x window
具有3d
的效果。如何把
drawable
交給opengl
就是glx
所要做的工作。 x
提供了兩種
drawable: window
(onscreen
)和pixmap
(offscreen
)。與之對應的
glx也有
glxwindow
和glxpixmap
,此外,
glx還有自己特有的位於
offscreen
上的glxpbuffer
,glxpbuffer
與glxpixmap
不同是它比
glxpixmap
建立(在不可見的
frame buffer
中)更加方便。 對於
x window
和openggl
及glx
的關係圖請參閱「
aiglx
學習總結」。
二、應用程式的一般過程
應用程式一般先用
xopendisplay
開啟乙個鏈結,然後通過
glxqueryextension
查詢是否有
glx擴充套件
,如果不存在就做相應的處理
,否則就建立乙個視窗
,然後通過
glxgetfbconfigs
得到乙個
glxfbconfig
,它是主要用來描述顏色快取和一些輔助快取的格式、型別和大小的,建立
glxwindow
和glxcontext
的時候需要指定乙個
glxfbconfig
。接著把剛才建立的
xwindow
和glxfbconfig
傳給glxcreatewindow
建立乙個可以讓
opengl
渲染的視窗。同時,通過把剛才建立的
glxfbconfig
傳給glxcreatenewcontext
建立乙個
render context
。然後通過
glxmakecontextcurrent
把剛剛建立的
reder context
繫結到剛才建立的
glxwindow
上,那麼以後的
gl操作都將是按照
render context
對glxwindow
的操作。其大概的流程圖如下所示:
三、gl擴充套件的實現
由於在aiglx
中,gl
的實現是
indirect
方式的,即需要通過
x server
來實現,所以需要某個擴充套件來支援
gl命令從客戶端到伺服器的傳送,然而我找了很久都沒有發現這個擴充套件,後來才發現原來它是通過
glx擴充套件來實現
gl命令的傳送的。
既然glx是
x的乙個擴充套件,那麼它就是滿足
x的擴充套件機制的,關於
x的擴充套件機制可以參考
absurd
的x window
研究筆記。乙個擴充套件的實現必須包含三個部分,
client
,protocol
和server
,基本上乙個函式(需要
x server
來實現的函式)就需要在
protocol
中定義乙個請求的結構,然而對於
gl的命令
glx卻沒有為每個
gl函式設立乙個
request
,而是將所有的
gl命令的傳送都通過乙個
reques
即glxrender
請求來傳送,只是每個
gl命令的內部操作碼不同而已。具體的**可以參考
sgi的
glx的實現中的
g_render.c 。
機器學習 相關分析與回歸分析基礎
在研究變數關係的過程中,通常對於被研究的變數,稱為因變數,也稱為被解釋變數,一般用y表示。其它用來說明或解釋因變數變化的變數稱為自變數,也稱為解釋變數,用x表示。自變數可以有乙個,也可以有多個。例如,如果我們想 銷售收入,則銷售收入就是我們這次研究的因變數,如果我們是通過廣告費的支出來 銷售收入,則...
演算法設計與分析學習 蠻力法
參考 演算法設計與分析 第三章 蠻力法 接下來的每章中,我們專注於一種特定的演算法設計策略。蠻力法是一種最簡單和直接的解決問題的辦法,往往是低效的,但我們不應該忽略它的地位,1 它可以解決廣闊領域的各種問題 2 在規模允許時,多少可以產生一些實用的演算法 3 往往可以以蠻力法為準繩,來衡量高效的演算...
機器學習與數學分析
機器學習是人工智慧的乙個分支。我們使用計算機設計乙個系統,使他能夠提供的訓練資料按照一定的方式來學習 隨著訓練次數的增加,該系統可以在效能上不斷學習和改進 通過引數優化的學習模型,能夠用於 相關問題的輸出。1 機器學習可以解決的問題 給定資料的 問題,包括資料清洗 特徵選擇,確定演算法模型 引數優化...