c++ - 检查所有使用的 OpenGL 扩展

标签 c++ opengl virtualization portability

我在我的应用程序中使用 GLEE,在普通 Windows 上一切正常。

但是,在虚拟化下运行时,我的应用程序无法正常运行。它要么崩溃,要么只呈现黑色。这可能是由于缺少某些 OpenGL 扩展。我试图识别所有使用的扩展并在程序启动期间检查,以便它警告用户。这在崩溃的情况下已经解决了。但是,在呈现黑色的情况下,我没有收到任何扩展名丢失警告。我怀疑这是因为我错过了一些扩展检查。所以我的问题是。

有没有什么好的方法可以识别应用程序中使用的所有 OpenGL 扩展,以便为它们添加检查?

最佳答案

有可能,但需要做一些工作。

GLEE 提供延迟加载,因此您应该能够简单地修改它以记录每个被调用的函数。延迟加载代码(我没有看过,诚然,但它可能是类似的)可能看起来像:
if(funcptr == 0) { _ glee_load_fp(funcptr, _ _ FUNCTION _ _) } funcptr(参数); .

因此,您首先要做的是记录您实际以这种方式调用的所有函数,然后您必须进行反向查找,将函数名称映射到扩展。通常这意味着要解析 glext.spec,这是一个可怕的过程。但幸运的是,您可以从 GLEE 网站下载 GLEE 内部所有内容的 xml 表示形式,这样使用起来要好得多。

关于c++ - 检查所有使用的 OpenGL 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5139312/

相关文章:

opengl - 如何在glsl中计算gl_FragCoord

virtualization - kvm的hypercall怎么用?

linux - Qemu 中的 guest 操作系统在 irq4 上生成过多中断

c++ - std::count 的复杂性

c++ - 在cygwin中使用mingw编译器编译c++程序时缺少dll

c++ - boost::dynamic_bitset 如何存储位

java - 将 block 添加到 block - Java OpenGL

java - 在opengl中在矩形窗口上绘制正方形

c++ - 如何检查对象实例上的虚函数是某种实现

windows - 无法使用安装了启用 Hyper-V 和 WSL2 的 VirtualBox 启动 Windows 10 guest