看板 C_and_CPP 關於我們 聯絡資訊
想請教一下openGL glNewList與glCallList的問題 我目前正在學習OpenGL 就我目前的認知 glNewList的功能似乎就是把描述的一切圖形先建立起來 等到往後呼叫到glCallList直接把它拿出來用 應該沒錯吧? 如果 今天用函式代替glNewList 就是將我要的圖形描述在我自訂函式之中 而不使用List 應該可以達到同樣的功能 但是程式本身的運作應該是不同的吧? 我目前知道 用glNewList建立起來的物件 在往後用glCallList的時候會比自訂函式快很多 但是似乎卻無法改變已經建立成List的物件的參數(例如長寬) glNewList(list_name, GL_COMPILE) 裡面的GL_COMPILE 似乎就是在建立list的時候compile這些內容 這應該就是他跟函式的差別 我的意思是 glNewList(list_name, GL_COMPILE) 中的GL_COMPILE 到底讓glNewList在程式裡面做了什麼特別的事情呢? (而且這件事情是自訂函式所沒辦法達到的) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.32.209
VictorTom:最啟碼, glList減少了AP的API call次數, 如果driver和HW 08/16 01:47
VictorTom:實作的好的話, 這一部份的API call的overhead是你自己用 08/16 01:48
VictorTom:function實作無法克服, 甚至反而可以說overhead更大的. 08/16 01:48
VictorTom:List小弟比較沒在用, 但是已經建好的List在直接call來繪 08/16 01:49
VictorTom:圖時, driver layer肯定可以對它做相當程度的最佳化, 傳 08/16 01:50
VictorTom:統Begin/End的呼叫方式, 其實是相當沒效率的一種運作方 08/16 01:51
VictorTom:法; 甚至HW+driver對已知要畫的流程有什麼方法可以最佳 08/16 01:51
VictorTom:化也是不無可能的:) 08/16 01:51
VictorTom:話說回來, Display List也真的是相當古老的東西了, 個人 08/16 01:52
VictorTom:建議除非有什麼理由非用不可, 不然就算是fixed function 08/16 01:52
VictorTom:應該也有更好更有效率的方法來繪圖, OpenGL 3.x以後這個 08/16 01:57
VictorTom:feature都被mark為deprecated了, OpgnGLES 1.x與2.0也都 08/16 01:58
VictorTom:不支援這個功能呢@_@" 08/16 01:59
yayarice:感謝樓上專業回答 08/16 03:00
yayarice:話說我的OpenGL相當古老 也找不到新的...... 08/16 03:01
Bencrie:我想原po只是不知道怎麼用extension,而不是找不到新的 XD 08/16 11:01
VictorTom:OpenGL因為歷史與作業系統的關係, 新的功能常常用試著先 08/16 13:18
VictorTom:query extension, 然後用GetProcessAddress把新功能的 08/16 13:18
VictorTom:API function pointer address拿回來才能用, 去網路上找 08/16 13:18
VictorTom:找有沒有範例吧; 現在的NV/AMD Gfx, 應該實作到了就算沒 08/16 13:19
VictorTom:有3.0也有2.1, GeForce 7系列更新driver就有2.1的功能了 08/16 13:20
VictorTom:就算是Intel的內顯, 應該也有到1.4甚至1.5了; 所以不太 08/16 13:22
VictorTom:理解"您的"OpenGL古老是什麼意思?? 08/16 13:22
Bencrie:不過奇怪的是只有Win32需要GetProcessAddress(好像是因為 08/16 15:38
Bencrie:只能先連結到Windows的軟體實作opengl32.dll的樣子) 08/16 15:40
Bencrie:Linux則是直接link廠商提供的library,不需要查address。 08/16 15:42
yayarice:就是我找到的OpenGL...是1.1的...... 08/16 16:44
Bencrie:Windows上的軟體實作&SDK是1.1的沒錯,你需要另外裝 08/16 17:22
Bencrie:glext.h 裡面會定義更多新的OpenGL函數 & macro 08/16 17:23
VictorTom:你找到的OpenGL是1.1的這句話本身就是一個問題....Orz 08/16 20:25
VictorTom:OpenGL是一套3D Library/API, 新版本的feature需要HW/ 08/16 20:26
VictorTom:driver等Gfx的環境提供, 加上AP端使用這些新的feature來 08/16 20:26
VictorTom:實作; 你的OpenGL是1.1, 要嘛就是找到的學習資料/sample 08/16 20:27
VictorTom:是1.1的, 這點請您自己更換material; 如果是運行平台/環 08/16 20:27
VictorTom:境只有1.1的功能, 也許您應該先提供您運行的環境, 包含 08/16 20:28
VictorTom:作業系統, 顯示卡, 與驅動程式版本, 以及程式執行的方式 08/16 20:28
VictorTom:等; Windows下, 可以去找 OpenGL Extension Viewer來看 08/16 20:30
VictorTom:http://www.realtech-vr.com/glview/ 可以幫您彙整您的 08/16 20:30
VictorTom:環境OpenGL相關的資訊與能力; 至於新版的header file等 08/16 20:33
VictorTom:http://www.opengl.org/registry/ 請來這裡下載:) 08/16 20:34
yayarice:我是初學者 非常初學 對前輩們的回答感激不盡啊~~ 08/16 21:41