OpenGL统一名称指针作为字符串

问题描述 投票:2回答:2
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参考发送给即将被销毁的字符串对象是否有危险?

c++ opengl shader glm-math uniform
2个回答
3
投票

将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。

© www.soinside.com 2019 - 2024. All rights reserved.