Этот код предназначен для рисования двух треугольников в конце в виде квадрата.
Мне нужно нарисовать еще один квадрат рядом с ним.
Это вывод этого кода
У меня проблема с этим, я не знаю, каксделай это? Я уже пытался создать другой массив, но он не работал, я думаю, что проблема в точке вершин.
//Shaders
const char *vertexShaderSource =
"#version 410 \n"
"layout (location=0) in vec3 position; \n"
"void main(void)\n"
"{ gl_Position = vec4(position.x , position.y , position.z ,1.0f);}";
//Frsgment Shaders
const char *fragmentShaderSource =
"#version 410 \n"
"out vec4 fragcolor;\n"
"uniform vec4 ourColor;\n"
"void main(void)\n"
"{ fragcolor = vec4(0.1,0.0,1.0,1.0) ;}";
//First sequare
GLfloat vertices1[]={
0.5f, 0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
-0.5f, 0.5f, 0.0f,
};
GLfloat vertices2[]={
-0.5f, -0.5f, 0.0f,
-0.5f, 0.5f, 0.0f,
0.5f, 0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
};
GLuint VBOs[2] ,VAOs[2] ;
glGenVertexArrays(2,VAOs);
glGenBuffers(2,VBOs);
// first sequare
glBindVertexArray(VAOs[0]);
glBindBuffer(GL_ARRAY_BUFFER,VBOs[0]);
glBufferData(GL_ARRAY_BUFFER , sizeof(vertices1),
vertices1,GL_STATIC_DRAW);
glVertexAttribPointer(0,3,GL_FLOAT ,GL_FALSE,
3*sizeof(GL_FLOAT),(GLvoid*)0);
glEnableVertexAttribArray(0);
glBindVertexArray(VAOs[1]);
glBindBuffer(GL_ARRAY_BUFFER,VBOs[1]);
glBufferData(GL_ARRAY_BUFFER , sizeof(vertices2),
vertices2,GL_STATIC_DRAW);
glVertexAttribPointer(0,3,GL_FLOAT ,GL_FALSE,
3*sizeof(GL_FLOAT),(GLvoid*)0);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER,0);
glBindVertexArray(0);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
while (!glfwWindowShouldClose(mainWindow))
{
glfwPollEvents();
glClearColor(0.1f, 0.2f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(renderingProgram);
glBindVertexArray(VAOs[0]);
glDrawArrays(GL_TRIANGLES, 0, 3);
glBindVertexArray(0);
glBindVertexArray(VAOs[1]);
glDrawArrays(GL_TRIANGLES, 0, 3);
glBindVertexArray(0);
glfwSwapBuffers(mainWindow);
}