为什么 GLEW 说我没有扩展?
Why does GLEW say that I don't have extensions?
我正处于OpenGL应用程序的初始化阶段,我正在添加一些代码来检查各种扩展。我立刻遇到了一个绊脚石:
/* Check for EXT_texture_compression_s3tc */
if (GLEW_EXT_texture_compression_s3tc)
infomore("GL_EXT_texture_compression_s3tc supported.n");
else
errormore("GL_EXT_texture_compression_s3tc unsupported.n");
/* Check for anisotropic filtering */
if (GLEW_EXT_texture_filter_anisotropic)
infomore("GL_EXT_texture_filter_anisotropic supported.n");
else
warnmore("GL_EXT_texture_filter_anisotropic unsupported.n");
根据这一点,S3TC和各向异性滤波都不支持我的视频卡,尽管我知道我确实有它。我在这个项目上使用了OpenGL,没有任何问题。GLEW初始化良好(glewExperimental=true(,我的上下文设置正确,其他一切都很好,但出于某种原因,GLEW认为我没有这些扩展。
这是怎么回事?
请允许我(适度地(胡乱猜测:你是否有可能使用核心配置文件上下文?你会因此而使用glewExperimental = true
吗?
问题是GLEW只是相对于核心剖面被破坏。它试图使用glGetString(GL_EXTENSIONS)
,这在核心配置文件中是无效的(现代方式是使用glGetIntegerv(GL_NUM_EXTENSIONS, &ext_cnt); for (i=0; i<ext_cnt; i++) glGetStringi(GL_EXTENSION,i)
(,只会生成一个错误。GLEW无法查询哪些扩展可用。现在glewExperimental = true
所做的是:忽略扩展似乎丢失的事实,并无论如何查询函数指针。这只是一个大黑客,函数指针可能存在的事实并不能保证重复的GL扩展真的存在和可用。这种混乱的另一个副作用是你正在经历的:对于GLEW来说,这些扩展根本不存在。
更新
我不知道为什么GLEW多年来一直没有修复这个isse(甚至有人提出了使其与现代核心配置文件兼容的补丁(,但看起来这种行为将伴随我们很长一段时间
有了GLEW 2.0,这个问题终于得到了解决,它确实支持核心配置文件,并且不再需要glewExperimental
破解操作系统。它也不会生成总账错误。
- 是否可以通过C++扩展强制多个python进程共享同一内存
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 扩展光电二极管探测器以支持多个传感器
- C++中的VLA,扩展名为std=C++11
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- C++返回 Numpy 数组的 Python 扩展模块
- 扩展可变参数模板中的变量名称
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 扩展C++生成的代码的模板参数类型名称
- 我想通过带有C++和Python的插件创建一个可扩展的应用程序
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- 将元组类型扩展为可变参数模板?
- 如何按文件扩展名引用文件夹中的文件
- HDF5Cpp 扩展复合数据集超板问题
- MSVC中的宏观扩展问题
- 嵌套参数包扩展失败
- GLEW只是一个扩展库,或者它也包含OpenGL ES 2.0实现
- 为什么 GLEW 说我没有扩展?