首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何利用GL_ARB_stencil_texturing

如何利用GL_ARB_stencil_texturing
EN

Stack Overflow用户
提问于 2015-07-16 08:58:40
回答 2查看 409关注 0票数 2

根据我所读到的,要在着色器中对模板纹理进行示例,我需要设置GL_DEPTH_STENCIL_TEXTURE_MODE,所以我这样做了:

代码语言:javascript
运行
复制
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_STENCIL_TEXTURE_MODE, GL_STENCIL_COMPONENTS);

但我得到一个无效的枚举..。为什么会这样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-16 15:18:06

根据手册页,这个调用的正确枚举值将是GL_STENCIL_COMPONENT,而不是GL_STENCIL_COMPONENTS (注意后面的S)。

事实证明,手册页是错误的。不幸的是这并不罕见。如果您在规范中查找它(例如,OpenGL 4.5规范文档中第225页的表8.17 ),则DEPTH_STENCIL_TEXTURE_MODE的有效值是GL_DEPTH_COMPONENTGL_STENCIL_INDEX

在此基础上,呼吁应:

代码语言:javascript
运行
复制
glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_STENCIL_TEXTURE_MODE, GL_STENCIL_INDEX);

此特性要求OpenGL 4.3或更高版本。

GL_STENCIL_COMPONENTSglGetInternvalFormativ()的有效参数,而不是glTexParameteri()的有效参数。

票数 4
EN

Stack Overflow用户

发布于 2015-07-16 10:06:15

我假设您只从核心dll文件opengl32.dll中添加了不对称函数,并且只添加了gl.h或可能添加了glu.h头文件。这些标头不只是从外部直接链接库文件中从图形驱动程序加载函数。如果您遍历opengl32.dll中定义的函数,您可能找不到想要使用的所有函数,例如与顶点缓冲区相关的函数。然而,在gl.h中可能没有定义某些常量,例如GL_DEPTH_STENCIL_TEXTURE_MODE。这些函数可以根据操作系统通过适当的加载方法加载,在windows中您可以使用wglGetProcAddress。有关更多信息,请阅读文章。此外,这些常量也可以在其他地方定义。

幸运的是,已经为您完成了这项工作的是格鲁,如果您搜索GL_DEPTH_STENCIL_TEXTURE_MODE,您可能会找到分配给它的0x90EA。如果您只想使用不需要初始化GLEW的常量,但如果要使用,则至少必须调用glewInit

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31449740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档