glShaderSource
подпись согласно glShaderSource doc :
void glShaderSource(
GLuint shader,
GLsizei count,
const GLchar** string,
const GLint* length);
где string
"Указывает массив указателей на строки, содержащие исходный код для загрузки в шейдер". То, что вы пытаетесь передать, это указатель на завершающуюся NULL строку (то есть указатель на const char*
).
К сожалению, я не знаком с glShaderSource
, но могу предположить, что ожидается не указатель на «некоторый код», а что-то вроде этого:
const char** options =
{
"option1",
"option2"
// and so on
};
Из opengl-redbook , вы можете прочитать пример (я сократил его в целях):
const GLchar* shaderSrc[] = {
"void main()",
"{",
" gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;",
"}"
};
shader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(shader, NumberOfLines(shaderSrc), shaderSrc, NULL);