Я пытался заставить шейдеры работать. Они этого не делают.openGL, GLFW, 1281 ошибка на glShaderSource, самый следующий файл glShaderSource отлично работает как-то
std::cout << "a " << glGetError() <<std::endl; //making sure things work
GLuint vertexShader = 0;
GLuint fragmentShader = 1;
glCreateShader(GL_VERTEX_SHADER);
std::cout <<"b " << glGetError() <<std::endl;
glCreateShader(GL_FRAGMENT_SHADER);
std::cout <<"c " << glGetError() <<std::endl;
glShaderSource(vertexShader, GLsizei(1), (const char**)&VertexShaderSource, NULL);//ERROR
std::cout <<"d " << glGetError() <<std::endl;
glShaderSource(fragmentShader, GLsizei(1), (const char**)&FragmentShaderSource, NULL);//is somehow fine
std::cout <<"e " << glGetError() <<std::endl;
glCompileShader(vertexShader);
std::cout <<"f " << glGetError() <<std::endl;
glCompileShader(fragmentShader);
std::cout <<"g " << glGetError() <<std::endl;'
Теперь выход:
a 0
b 0
c 0
d 1281
e 0
f 1281
g 0
Это означает, что первый glShaderSource
вызов не работает, но по какой-то причине следующие glShaderSource
работы, делая то, что я думаю, что это точно так же вещь. Что здесь происходит ???
шейдеры являются:
const std::string VertexShaderSource ="#version 330 core"
""
"layout (location = 0) in vec3 position;"
""
"void main()"
"{"
" gl_Position = vec4(position.x, position.y, position.z, 1.0);"
"}";
const std::string FragmentShaderSource ="#version 330 core"
""
"out vec4 color;"
""
"void main()"
"{"
" color = vec4(1.0f, 1.0f, 1.0f, 1.0f);"
"}";
И если проходя строку таким образом ((const char**)&VertexShaderSource)
не так, то почему второй вызов работает нормально?