電腦圖形學(二)輸出圖元_18_顯示列表_1_建立和命名OpenGL顯示表

來源:互聯網
上載者:User

標籤:

OpenGL顯示列表        把對象描述成一個命名的語句序列(或任何其他的命令集)並儲存起來既方便又高效。在OpenGL中使用稱為顯示表(display list)的結構可以做到這一點。一旦建立了顯示表,就可以用不同的顯示操作來多次引用該表。在網格中,描述圖形的顯示表存放在伺服器中,以避免每次顯示情境時都要傳送表中的命令。我們可以為以後的執行來建立並儲存顯示表,或指定表中的命令立即執行。顯示表對層次式建模特別有用,因為一個複雜的對象可以用一組簡單的對象來描述。
 
建立和命名OpenGL顯示表
使用glNewList/glEndList函數對包圍一組OpenGL命令就可形成顯示表。例如:
glNewList  (listID, listMode);...glEndList ();
       該結構用賦予參數 listID的正整數作為表名來形成一個顯示表。參數listMode可賦以OpenGL符號常量 GL_COMPILEGL_COMPILE_AND_EXECUTE之一。如果希望為以後執行而儲存該表,則使用 GL_COMPILE。否則,放人表中的命令立即執行,但仍然可以在以後再執行它。
       顯示表建立後,立即對包含如座標位置和顏色分量等參數的表示進行賦值計算,從而使表中僅儲存參數的值。對這些參數的任何後繼修改都不起作用。因為不能修改顯示表的值,所以在顯示表中不能包含如頂點表指標等OpenGL命令。
       我們可以建立任意多的顯示表並通過調用一個標識來執行特定的顯示表。一個顯示表還可以嵌套在另一個顯示表內。但如果一個顯示表被賦予一個已經使用的標識,則它取代原來的顯示表內容。因此,為了避免因故重用標識而造成顯示表的丟失,可以讓OpenGL產生一個標識:
listID = glGenLists (1);
       該語句將一個未使用的正整數標識賦給變數listID。如果將g1GenLists中的變數由1改成另外一個正整數,則得到一個未使用的顯示表標識段。例如,假如引用g1GenLists (6),則保留6個連續正整數並將其中第一個賦給變數 listID。如果有錯或系統不能產生所要數量的連續整數,則返回0。因此,在使用從g1GenLists子程式獲得的標識之前要先檢查它是否為0。
       儘管使用g1GenList可產生未使用的標識,我們還是可以單獨向系統查詢指定整數值是否已用做表名。實現該功能的函數是
glIsList (listID);
如果返回值GL_TRUE,則listID中的值已經用做某顯示表的名字。如果該整數尚未被使用,gtIsList函數則返回值 GL_FALSE

電腦圖形學(二)輸出圖元_18_顯示列表_1_建立和命名OpenGL顯示表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.