c++ - 如何将 std::string 传递给 glShaderSource?

标签 c++ string opengl char

我有以下代码:

glShaderSource(shader, 1, (const char **)data.c_str(), NULL);

但这会使我的程序崩溃。如何将 std::string 转换为 const char ** ? 我也试过 (const char **)& 但它说“需要左值”,我不明白。当我使用此代码时它工作正常:

const char *data = "some code";
glShaderSource(shader, 1, &data, NULL);

但我不能直接从 std::string 让它工作。我可以为它分配一个新的 char 数组,但这不是很好的代码。

我也试过 const GLchar 但显然没有区别。

最佳答案

data.c_str() 返回一个 const char*,所以这样做:

const char *c_str = data.c_str();
glShaderSource(shader, 1, &c_str, NULL);

关于c++ - 如何将 std::string 传递给 glShaderSource?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6047527/

相关文章:

c++ - 纹理显示为黑色

c++ - 模板化类无法采用其他模板化类

c++ - 尝试使用外部 header 编译程序时出现问题

javascript - 在不使用 split 方法的情况下找到字符串中最长的单词

c++ - 带有 glTranslate 的 gluCylinder

c++ - 构建插件以扩展 Qt 应用程序

java - 在字符串中表示 java 中的引号字符有哪些不同的方法?

c - 即使数组不为空,数组大小也为零

c++ - 我想将我的计算内容放在辅助线程中,同时将主循环保留在主线程中

c++ - 有没有一种使用 C++ 在 mac OS X 中打开一个(或多个)opengl 窗口的简单方法?