2010年4月17日 星期六

Ogre3D v1.7 與 OpenGL ES 1.1

 Ogre3D 從 v1.7版開始正式支援 OpenGL ES 1.1, 只是官方的原始碼缺少了很多東西, 整個建置的過程非常的不順利, 感覺上也許在 v 1.8版 支援 OpenGL ES 2.0的時候才會改善吧, 畢竟這個開發 OpenGL ES的新成員也是最近才剛加入的, 他正忙著因應 OpenGL ES 2.0 for iPhone而忙呢.

在網路上搜尋了很多資料, 並且改了 Ogre 原始碼一些地方才終於完成, 抓了張圖做紀念.



2010年4月16日 星期五

建置 Ogre3D 1.7 Windows版

 這應該算是一篇筆記文, 因為每次在建置 Ogre3D 1.7 版時總是忽略了幾個步驟, 詳細的建置步驟在 官方 wiki 上有 , 這裡只寫出容易忽略的地方.

  1. 系統的環境變數加上 BOOST_ROOT c:\xxxxxx
  2. 先建置 Boost.
  3. Ogre Dependencies 解開後要放在 Source 目錄下, 並且使用 VS 建置 Dependencies 下的專案以產生 .lib 檔.
  4. DirectX 似乎已沒有版本限制, 使用最新的就可以.

2010年4月13日 星期二

偵測記憶體洩漏 Visual Leak Detector

寫程式難免會遇到記憶體洩漏, 那是個大條且又會讓人頭痛的問題, 所幸的是現在有一些工具可以使用, 如 Dev Partner Studio, GlowCode...等等, 不過這些大都是商業軟體居多, 而 Visual C++ 本身也是有偵測記憶體洩漏的函式可以使用, 但是使用起來比較繁鎖, 現在有一個 OpenSource 的專案叫 Visual Leak Detector, 可以很容易的解決這個問題.

下面將簡單的介紹 Visual Leak Detector :

<安裝及環境設定>

  1. 先至 官網 下載檔案, 解壓縮後並安裝檔案.
  2. 設定檔, 從 [開始] > [程式集] > [Visual Leak Detector] > [Confifure], 然後會開啟一個 vld.ini.

下面列出 vld.ini 比較會需要使用到的參數, 詳細的說明可以在說明檔中找到,

  • ReportEncoding : 若回報資訊輸出至檔案, 檔案內文所使用的編碼方式, ascii, unicode.
  • ReportFile : 若回報資訊輸出至檔案, 輸出的檔案名稱.
  • ReportTo : 回報資訊輸出至何處, debugger 為 Visual Studio 除錯視窗, file 為檔案, both 為兩者都輸出.
  • StartDisabled : 載入時先關閉記憶體洩漏偵測, 有需要時再自行開啟.

使用 Windows7 時可能因為權限因素無法儲存 vld.ini, 請先將檔案複製到別處, 改完之後再複製到原目錄下.

3. 設定目錄, [工具] > [選項] > [專案和方案] > [VC++ 目錄], 在 [Include 檔案] 設置安裝目錄的 Include 目錄, 在 [程式庫檔] 設置安裝目錄的 Lib 目錄


<專案及原始碼>

  1. 若沒有 precompiled header 的話, 在每個檔案前都必須 include "vld.h", 若有 precompiled header, 如 stdafx.h, 則只要在最前面 include "vld.h" 即可, 不需每個檔案都有.
  2. 專案設定中, 設定 link vld.lib.


<其它>

  1. vld 只在 Debug 模式才有效用.
  2. 在原始碼中可以任意呼叫 VLDEnable() 或 VLDDisable() 開始或關閉 vld 的功能.

2010年4月11日 星期日

繪圖引擎

 繪圖引擎要開始整合了, 我覺得好像有點貪心, 居然想要整合三套不同的繪圖引擎, 實作了一下, 感覺上是不太可能, 只能說儘量, 在某些低階的部份還是必須要到各引擎專屬的功能, 因此, 繪圖引擎的整合上可能是要使用非常的高階的方法.

 初期會先整合雜項的功能, 之後才會開始製作獨立功能的項目, 處理這雜項的整合想必又會是一件挑戰, 畢竟要將不同的繪圖引擎使用單一界面來運作的作法, 是真的有點困難, 不過我還是會儘量做到我想要的, 路總是要想的長遠一點才行.