我正在使用 OpenGL 着色器,它更喜欢 C 字符串而不是 NSStrings,我遇到了以下奇怪情况:
相关事实是
1) shaderSource 定义为
NSString* shaderSource
2) glShaderSource 的签名是
glShaderSource(GLuint shader, GLuint count, const GLchar** string, const GLint *length)
这有效:
int len = [shaderSource length];
const char *cstr = [shaderSource UTF8String];
glShaderSource(shader, 1, &cstr, &len);
这不起作用:
glShaderSource(shader, 1, &[shaderSource UTF8String], &[shaderSource length]);
我显然不明白这里关于目标 c 的一些东西,我想纠正这个问题,所以如果你有这种倾向,请告诉我,WTF?