《OpelGL編程指南第七版》第七章:顯示列表(筆記)

《顯示列表》

標籤(空格分隔): OpenGL編程指南第七版


在OpenGL中,本章所有技術和功能都被廢棄刪除
顯示列表是一組存儲在一起的OpenGL函數,可以在以後執行。

7.1爲什麼要使用顯示列表

可以提高性能。當我們在本地機器上運行OpenGL時,可以把經常使用一些函數存儲在顯示列表中,以提高程序的性能。
顯示列表只能包含OpenGL函數,且顯示列表中的值不能在以後進行修改。

7.3 顯示列表的設計哲學

image_1c3mhk5pq1sbcm3j1v221jou1fln9.png-101.5kB
image_1c3mhkpjloorjk9k121k1n15tcm.png-246.1kB

7.4 創建和執行顯示列表

7.4.1 命名和創建顯示列表

GLuint glGenLists(GLsizei range);
image_1c3mjv9alv5n1okj1brp1eii1sff44.png-115.3kB
如:GLuint ListName = glGenLists(1);

void glNewList(GLuint list, GLenum mode);
image_1c3mi5mgb13hcipo1i9c1l06f2q13.png-164.7kB
void glEndList(void)

7.4.2 存儲在顯示列表裏的是什麼

在創建顯示列表時,只有表達式的值存儲在顯示列表中。如果數組中的值以後發生了改變,顯示列表中的值並不會發生改變。如:
image_1c3mibm0ker5ugvigngbr1m9r2g.png-31.6kB
顯示列表中存儲的顏色仍然是創建時的黑色。不會變爲紅色。
image_1c3miehd0gucbfi1v52b5c1hem2t.png-247.8kB

7.4.3 執行顯示列表

void glCallList(GLuint list);

7.4.4 層次式顯示列表

顯示列表定義中調用其他的顯示列表,如:
image_1c3mih5aq2c0d9ptoq17ht4r83a.png-45.8kB
但顯示列表的嵌套層次具有限制,限制至少爲64。
創建與原有的顯示列表具有相同索引的顯示列表將自動刪除原先的那個顯示列表。

7.4.5 管理顯示列表索引

GLboolean glIsList(GLuint list);
void glDeleteLists(GLuint list ,GLsizei range);
image_1c3mjgvufioe174811omek3of23n.png-85.1kB

7.5 執行多個顯示列表

void glListBase(GLuint base);
image_1c3mk4v3i11hd4l2sk51nlj26p4h.png-76.6kB
void glCallLists(GLsizei n, GLenum type, GLvoid* lists);
image_1c3mk58dbtpii5gv3a1ivp1n9n4u.png-64.5kB
image_1c3mk6ujt1mhgq031fqhtra1hks5b.png-216.2kB

7.6 用顯示列表管理狀態變量

image_1c3ml28i31cm41ggl16l11so01mno65.png-164.5kB
image_1c3ml2iv59rm1d7113vm15v52g16i.png-171kB

封裝模式修改
image_1c3ml0pa01e301hfl11jc1hqc13t25o.png-25.5kB

發佈了76 篇原創文章 · 獲贊 83 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章