const char* vertexShaderSource =
"#version 330 core \n"
"layout(location = 0) in vc3 aPos \n"
"void main (){ \n"
" gl_Position = vec4(aPos.x,aPos.y,sPos.z,1.0);} \n";
const char* fragmentShaderSource =
"#version 330 core \n"
"out vec4 FragColor; \n"
"void main() { \n"
"FragColor = vec4(1.0f, 0.5f, 0.2f, 0.0f);} \n";
unsigned int VAO;
glGenVertexArrays(1, &VAO);
glBindVertexArray(VAO);
unsigned int VBO;
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices,GL_STATIC_DRAW);
unsigned int vertexShader;
vertexShader=glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader, 1, &fragmentShaderSource,NULL);
glCompileShader(vertexShader);
unsigned int fragmentShader;
fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);
glCompileShader(fragmentShader);
unsigned int shaderProgram;
shaderProgram = glCreateProgram();
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);
glLinkProgram(shaderProgram);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
while (!glfwWindowShouldClose(window))
{
processInput(window);
glClearColor(0.3f, 0.33f, 0.2f, 1.0f);//状态设置函数
glClear(GL_COLOR_BUFFER_BIT);//状态使用函数,使用当前状态清空颜色缓存
glBindVertexArray(VAO);
glUseProgram(shaderProgram);
glDrawArrays(GL_TRIANGLES, 0, 3);
glfwSwapBuffers(window);
glfwPollEvents();
}
按教程来的,前两段是着色器的硬编码,为什么片段着色器没起作用,还有,把上面字符串随便删改一点还是能画出三角形,不过一直没有颜色,是哪里出问题了吗