OpenGL统一名称指针作为字符串[重复]
Posted
技术标签:
【中文标题】OpenGL统一名称指针作为字符串[重复]【英文标题】:OpenGL Uniform Name pointer as string [duplicate] 【发布时间】:2020-01-13 08:10:58 【问题描述】:Set_Up_Shader(unsigned int sShader, string Uni_s, glm::vec3 V3)
int isu = glGetUniformLocation(sShader, &Uni_s[0]);
glUniform3fv(isu, 1, glm::value_ptr(V3));
我的问题是:显然 glGetUniformLocation 参数 2 应该是 const char*。 OpenGL 会延迟/需要 const 对象吗?向即将销毁的字符串对象发送 OpenGL 引用是否危险?
【问题讨论】:
【参考方案1】:向即将被销毁的字符串对象发送 OpenGL 引用是否危险?
没有。
见OpenGL 4.6 API Core Profile Specification - 2.1 Execution Model:
数据绑定在调用时发生。这意味着传递给 GL 命令的数据 当收到该命令时被解释。即使命令需要 指向数据的指针,这些数据在调用时被解释,任何后续 对数据的更改对 GL 没有影响
【讨论】:
【参考方案2】:不,您的char *
可以毫无问题地转换为const char *
,并且const char *
参数立即用于查找统一位置。
无论如何,传递Uni_s.c_str()
会更好一些,因为这样更容易 grep。
【讨论】:
以上是关于OpenGL统一名称指针作为字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript对象:按名称作为字符串访问变量属性[重复]
类别名称之间的连字符但是当我使用 foreach 作为重复名称时