跳转到内容

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 编程/安装

浏览和下载 完整代码
华夏公益教科书