summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvisil <workregor@mail.ru>2023-10-09 11:15:33 +0300
committervisil <workregor@mail.ru>2023-10-09 11:15:33 +0300
commit31066e789acad4c61b4fc68a6cdf9249b9a44299 (patch)
tree9014759bfd5dec34d719acc7beb02c220de5d393
parentb210fc71438d31cb5cbc434bf9b8db4b7164e3c8 (diff)
Знаменитый треугольник
-rwxr-xr-xlesson01/a.outbin57456 -> 57360 bytes
-rw-r--r--lesson01/main.cpp43
2 files changed, 28 insertions, 15 deletions
diff --git a/lesson01/a.out b/lesson01/a.out
index 885c317..7fca4c0 100755
--- a/lesson01/a.out
+++ b/lesson01/a.out
Binary files differ
diff --git a/lesson01/main.cpp b/lesson01/main.cpp
index 647674a..1c3804d 100644
--- a/lesson01/main.cpp
+++ b/lesson01/main.cpp
@@ -5,19 +5,23 @@
const char *vertexShaderSource = "#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
+ "layout (location = 1) in vec3 aColor;\n"
+ "\n"
+ "out vec3 ourColor;\n"
+ "\n"
"void main()\n"
"{\n"
- " gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
+ " gl_Position = vec4(aPos, 1.0);\n"
+ " ourColor = aColor;"
"}\0";
const char *fragmentShaderSource = "#version 330 core\n"
"out vec4 FragColor;\n"
- "\n"
- "uniform vec4 ourColor;"
+ "in vec3 ourColor;\n"
"\n"
"void main()\n"
"{\n"
- " FragColor = ourColor;\n"
+ " FragColor = vec4(ourColor, 1.0);\n"
"}\0";
void framebuffer_size_callback(GLFWwindow* window, int width, int height);
@@ -54,14 +58,13 @@ int main()
// вершины фигуры
float vertices[] = {
- -0.5f, -0.5f, 0.0f,
- 0.5f, -0.5f, 0.0f,
- 0.5f, 0.5f, 0.0f,
- -0.5f, 0.5f, 0.0f
+ // координаты // цвета
+ -0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 1.0f,
};
unsigned int indices[] = {
0, 1, 2, // первый треугольник
- 2, 3, 0 // второй треугольник
};
@@ -139,10 +142,20 @@ int main()
3,
GL_FLOAT,
GL_FALSE,
- 3 * sizeof(float),
+ 6 * sizeof(float),
(void*)0
);
glEnableVertexAttribArray(0);
+ glVertexAttribPointer(
+ 1,
+ 3,
+ GL_FLOAT,
+ GL_FALSE,
+ 6 * sizeof(float),
+ (void*)(3* sizeof(float))
+ );
+ glEnableVertexAttribArray(1);
+
/* glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); */
while (!glfwWindowShouldClose(window)) {
@@ -152,13 +165,13 @@ int main()
glClear(GL_COLOR_BUFFER_BIT);
// задаём uniform fragment-шейдера
- float timeValue = glfwGetTime();
- float greenValue = (sin(timeValue) / 2.0f) + 0.5f;
- int vertexColorLocation = glGetUniformLocation(shaderProgram,
- "ourColor");
+ /* float timeValue = glfwGetTime(); */
+ /* float greenValue = (sin(timeValue) / 2.0f) + 0.5f; */
+ /* int vertexColorLocation = glGetUniformLocation(shaderProgram, */
+ /* "ourColor"); */
glUseProgram(shaderProgram);
- glUniform4f(vertexColorLocation, 0.0f, greenValue, 0.0f, 1.0f);
+ /* glUniform4f(vertexColorLocation, 0.0f, greenValue, 0.0f, 1.0f); */
glBindVertexArray(VAO);
/* glDrawArrays(GL_TRIANGLES, 0, 3); */