Я немного погуглил и не могу понять, что не так. Мой шейдер:
#version 120
attribute vec2 coord2d;
void main(void)
{
gl_Position = vec4(coord2d, 0.0, 1.0);
}
Этот шейдер, который я знаю, работает, но когда я пытаюсь связать программу, я получаю:
glLinkProgram:Vertex info
-----------
0(3) : error C1013: function "main" is already defined at 0(4)
Я проверил, правильно ли попадают в память мерзости, а какие нет. они отлично компилируются. это шаг связывания, когда что-то идет не так. Я понятия не имею, что, и я бьюсь об этом довольно долгое время. какие-нибудь советы?
Изменить:
Вот код, который я использую для создания шейдера. он доходит до условного, он фактически полностью завершает выполнение, но журнал распечатывает то, что вы видели выше.
GLuint updateProg()
{
prog = glCreateProgram();
if (vs == 0 || fs == 0) return 0;
glAttachShader(prog, vs);
glAttachShader(prog, fs);
int link_ok;
glLinkProgram(prog);
glGetProgramiv(prog, GL_LINK_STATUS, &link_ok);
if (!link_ok)
{
fprintf(stderr, "glLinkProgram:");
print_log(prog);
return 0;
}
return prog;
}