gpt4 book ai didi

c++ - 为什么 GLEW 说我没有扩展?

转载 作者:行者123 更新时间:2023-11-30 02:47:38 24 4
gpt4 key购买 nike

我正处于 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 认为我没有这些扩展。

这是怎么回事?

最佳答案

请允许我的 sume(适度)大胆猜测:您是否有机会使用核心配置文件上下文?你用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做的是:忽略扩展似乎丢失的事实,并无论如何查询函数指针。这只是一个大 hack,函数指针可能存在的事实并不能保证相应的 GL 扩展确实存在和可用。这种困惑的另一个副作用是您正在经历的:对于 GLEW,这些扩展不存在。

更新

我不知道为什么 GLEW 多年来一直没有解决这个问题(甚至有人提出了补丁以使其与现代核心配置文件兼容),但看起来这种行为会持续一段时间很长一段时间。

有了 GLEW 2.0,这个问题终于得到解决,它确实支持核心配置文件,并且 glewExperimental不再需要黑客操作系统。它也不会产生 GL 错误。

关于c++ - 为什么 GLEW 说我没有扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22619406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com