2012年9月8日 星期六

如何用一個程式開啟兩個OpenGL視窗

在網路上搜尋了一下關於複數視窗繪圖的資訊
發現使用Direct 3D就只能用一個視窗繪圖
有人建議一個視窗用Direct 3D而另一個視窗用OpenGL就可以了
實作上也確實可行
而且作法直覺簡單所以不說明了

我這篇要介紹的是如何使用兩個OpenGL視窗來描繪畫面
這在遊戲程式上大概沒什麼用途
不過工具程式的話倒不是沒用處


要使用兩個OpenGL視窗只要解決以下幾點

  1. 開啟兩個視窗
  2. 使用wglShareLists()將兩個HGLRC連起來
  3. 大部分gl開頭的函式在使用前要用wglMakeCurrent()將描繪對象切換到指定視窗

就這樣並不難
但若你不懂如何使用WindowsAPI的話
在第一點就卡住了
想開兩個視窗肯定是包裝成兩個物件最好管理
但是Windows體系的訊息幫浦偏偏要你餵它一個函式
而且不能放成員函式
你要另外想辦法處理


在我寫的Toy引擎裡面也有實作這功能
想看code示範的就去看看吧
就在右上的連結
Toy現在可以開兩個OpenGL視窗外加一個Direct 3D視窗

對WindowsAPI跟OpenGL不熟的可以去NeHe逛逛

2 意見:

Awen 提到...

您好:
我是遊戲開發社群Gamedev@TW的管理員,
希望可以轉貼您的遊戲開發相關文章,
我會註明轉貼出處,

謝謝您 (^.^)

還是零分 提到...

沒問題啊!
你論壇裡收集的資料還真的是很適合新手呢