首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Python) ARB / EXT的OpenGL问题

(Python) ARB / EXT的OpenGL问题
EN

Stack Overflow用户
提问于 2013-11-11 11:05:13
回答 2查看 298关注 0票数 0

我想编写独立于平台的代码,但我遇到了问题。在某些机器(windows/python OpenGL)上定义了GL_VERTEX_SHADER,在其他机器上定义了GL_VERTEX_SHADER_EXT,还有一些机器定义了GL_VERTEX_SHADER_ARB。使用函数glCreateShaderObject(EXT/ARB)和glProgramParameteri也可以找到相同的组合,我必须确保对这些函数使用正确的枚举。

有没有办法(可能是通过个人资料)?以确保您所在的机器支持其中的一个组合?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-13 03:12:39

除非您是针对低于2.0的OpenGL版本,否则不要使用这些扩展。老实说,这些天你为什么还要费心去支持这些旧机器呢?为了保持与早于2.0的实现的兼容性,您需要做太多不方便的事情,包括对两个纹理中的非功率进行重新标度。

有没有办法(可能是通过个人资料)?以确保您所在的机器支持其中的一个组合?

是的,如果您将OpenGL 2.0作为软件的基准需求,那么您可以使用诸如:glUseProgram (...)之类的标准GLSL函数。ARB扩展使用的名称与核心GLSL之间没有直接的对应关系,例如,我刚才提到的函数的ARB版本是glUseProgramObjectARB (...)

至于glProgramParameteri和它的EXT/ARB品种,这可能不是您所认为的那样。这与GL_VERTEX_SHADER无关。在引入core (OpenGL 4.1)之前,这个函数是通过扩展ARB_geometry_shader4EXT_geometry_shader4提供的。它最初是用扩展名glProgramParameteri正式定义的:ARB_get_program_binary,如果它提供这个扩展,它可能出现在一个非OpenGLOG4.1实现中。

简而言之,如果您有一个兼容的4.1实现,则保证您有一个用于glProgramParameteri的过程地址。否则,要使用的适当函数取决于扩展字符串中出现的这些函数:

代码语言:javascript
复制
 1. ARB_get_program_binary --> glProgramParameteri    (...)
 2. ARB_geometry_shader4   --> glProgramParameteriARB (...)
 3. EXT_geometry_shader4   --> glProgramParameteriEXT (...)

如果这些条件都不满足,那么您就没有任何一种glProgramParameteri

票数 2
EN

Stack Overflow用户

发布于 2013-11-11 13:58:27

查看GLee

GLee (GL轻松扩展库)是一个用于OpenGL的免费跨平台扩展加载库.它为版本3.0和399扩展的OpenGL函数提供了无缝支持。 Compatibility:GLee与Windows、Linux、OS和FreeBSD平台兼容.它也可能与其他使用X窗口的类unix系统兼容。

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

https://stackoverflow.com/questions/19904761

复制
相关文章

相似问题

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