|
@@ -47,11 +47,11 @@ static const Vertex vertices[3] =
|
|
|
};
|
|
|
|
|
|
static const char* vertex_shader_text =
|
|
|
-"#version 110\n"
|
|
|
+"#version 330\n"
|
|
|
"uniform mat4 MVP;\n"
|
|
|
-"attribute vec3 vCol;\n"
|
|
|
-"attribute vec2 vPos;\n"
|
|
|
-"varying vec3 color;\n"
|
|
|
+"in vec3 vCol;\n"
|
|
|
+"in vec2 vPos;\n"
|
|
|
+"out vec3 color;\n"
|
|
|
"void main()\n"
|
|
|
"{\n"
|
|
|
" gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n"
|
|
@@ -59,11 +59,12 @@ static const char* vertex_shader_text =
|
|
|
"}\n";
|
|
|
|
|
|
static const char* fragment_shader_text =
|
|
|
-"#version 110\n"
|
|
|
-"varying vec3 color;\n"
|
|
|
+"#version 330\n"
|
|
|
+"in vec3 color;\n"
|
|
|
+"out vec4 fragment;\n"
|
|
|
"void main()\n"
|
|
|
"{\n"
|
|
|
-" gl_FragColor = vec4(color, 1.0);\n"
|
|
|
+" fragment = vec4(color, 1.0);\n"
|
|
|
"}\n";
|
|
|
|
|
|
static void error_callback(int error, const char* description)
|
|
@@ -84,8 +85,9 @@ int main(void)
|
|
|
if (!glfwInit())
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
|
|
- glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
|
|
|
- glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
|
|
|
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
|
|
|
+ glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
|
|
|
+ glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
|
|
|
|
|
GLFWwindow* window = glfwCreateWindow(640, 480, "OpenGL Triangle", NULL, NULL);
|
|
|
if (!window)
|
|
@@ -124,6 +126,9 @@ int main(void)
|
|
|
const GLint vpos_location = glGetAttribLocation(program, "vPos");
|
|
|
const GLint vcol_location = glGetAttribLocation(program, "vCol");
|
|
|
|
|
|
+ GLuint vertex_array;
|
|
|
+ glGenVertexArrays(1, &vertex_array);
|
|
|
+ glBindVertexArray(vertex_array);
|
|
|
glEnableVertexAttribArray(vpos_location);
|
|
|
glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE,
|
|
|
sizeof(Vertex), (void*) offsetof(Vertex, pos));
|
|
@@ -148,6 +153,7 @@ int main(void)
|
|
|
|
|
|
glUseProgram(program);
|
|
|
glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) mvp);
|
|
|
+ glBindVertexArray(vertex_array);
|
|
|
glDrawArrays(GL_TRIANGLES, 0, 3);
|
|
|
|
|
|
glfwSwapBuffers(window);
|