跳轉到內容

OpenGL 程式設計/安裝/Windows

來自華夏公益教科書

從 Windows 95 開始的所有 Windows 版本都附帶了 OpenGL 實現(通常是 1.4 版)。 但是,如果您安裝(或更新)了顯示卡驅動程式,您可能正在使用顯示卡製造商自己的 OpenGL 實現。

OpenGL 庫通常可以以 opengl32.dll 的名稱在 \system32 資料夾中找到,該資料夾位於系統根資料夾(通常是 c:\windows)中。

與 OpenGL 相容的標題檔案捆綁在大多數編譯器中。 標標頭檔案的版本可能沒有完全更新到您正在執行的 OpenGL 實現。 如果是這樣,則必須使用 OpenGL 的擴充套件系統手動連結新函式,或使用 GLEW 等包裝器。

GLEW 的官方釋出旨在與 visualc++ 一起使用 - 但如果您使用的是 Code::Blocks 以及 MinGW/GCC,請不要擔心 - 您可以

  • 直接連結到 .dll(而不是新增不相容 mingw 的 .lib
  • 或者,您可以使用 MSys 重新編譯它並將其用作共享庫
cd glew-1.7.0/
make
  • 或者,您可以靜態構建 GLEW:在連結器選項的連結器庫中新增 glew32s.lib,並在編譯器標誌中新增-DGLEW_STATIC到您的編譯器標誌。

GLee 僅在 Windows 下以靜態方式編譯(不從 GNU/Linux 交叉編譯),但沒有此問題。

GLM 是一個僅包含標頭檔案的庫,因此您只需要將 GLM 版本解壓縮到一個目錄中,並將該目錄新增到專案屬性中的包含路徑中。


交叉編譯

[編輯 | 編輯原始碼]

現在可以使用與 MXE 相容的環境來呼叫較新的教程 Makefile,例如

  • 編譯 MXE
git clone https://github.com/mxe/mxe /opt/mxe
cd /opt/mxe/
# select your architecture in settings.mk, e.g. MXE_TARGETS := i686-w64-mingw32.static
make glew sdl2 sdl2_image freetype
cp -a .../glm /opt/mxe/usr/i686-w64-mingw32.static/include/
  • 準備環境
PATH=/opt/mxe/usr/i686-w64-mingw32.static/bin:/opt/mxe/usr/bin:$PATH
export CXX=i686-w64-mingw32.static-g++
export EXTRA_CPPFLAGS=-DGLEW_STATIC
export EXTRA_LDLIBS=-lopengl32
export PKG_CONFIG=i686-w64-mingw32.static-pkg-config
  • 像往常一樣輕鬆編譯
cd modern-tutorials/tutXXX/
make

除錯說明:由於一個錯誤,您需要透過以下方式將輸入管道傳輸到 GDBcat:

cd /opt/mxe/
make gdb

cd .../modern-tutorials/tutXXX/
cat | wine /opt/mxe/usr/i686-w64-mingw32.static/bin/gdb.exe ./triangle

錯誤日誌

[編輯 | 編輯原始碼]

sdl2-config --libs設定-mwindows選項,它將刪除命令黑視窗,但也刪除 stdout 和 stderr。

要檢視例如SDL_LogMessage輸出,您可以

  • 強制控制檯模式
 make LDFLAGS=-mconsole
  • 或明確重定向 stderr
triangle.exe 2> stderr.txt

(如果您知道明確重定向的原因,請隨時解釋。)

< OpenGL 程式設計/安裝

瀏覽和下載 完整程式碼
華夏公益教科書