我想将std :: strings的向量传递给OpenGL作为C样式的空终止字符数组(const char**)的数组.
void glTransformFeedbackVaryings(GLuint program,
GLsizei count,
const char **varyings,
GLenum bufferMode);
Run Code Online (Sandbox Code Playgroud)
可能吗?
bst*_*our 12
第一次使用std::string的.c_str()功能,将它们映射到const char*的.
std::vector<const char*> c_strs;
std::transform(std::begin(strings), std::end(strings),
std::back_inserter(c_strs), std::mem_fn(&std::string::c_str));
Run Code Online (Sandbox Code Playgroud)
然后通过.data()vector 的成员将它传递给你的函数:
glTransformFeedbackVaryings( ... , c_strs.size(), c_strs.data(), ...);
Run Code Online (Sandbox Code Playgroud)
用你的其他参数替换... 注意:我没有编译这段代码,但它应该没问题(理论上).
如果空间对您非常重要,您可以提前在向量中保留空间
c_strs.reserve(strings.size());
Run Code Online (Sandbox Code Playgroud)
或者用变换后
c_strs.shrink_to_fit();
Run Code Online (Sandbox Code Playgroud)