Pakonigoosy
@Pakonigoosy
Разработчик ПО

Почему не учитываются цвета в OpenGL?

Я задаю вершинный шейдер:
const char* vsSource = "#version 450\n"
		"layout (location = 0) in vec3 vertexCords;\n"
		"layout (location = 1) in vec3 color;\n"
		"out vec3 Color;\n"
		"void main(){\n"
		"gl_Position = vec4(vertexCords,1.0f) ;\n"
		"Color = color;"
		"}";

Фрагментный:
const char* fsSource = "#version 450\n"
		"in vec3 Color;\n"
		"out vec4 out_fragColor;\n"
		"void main(){\n"
		"out_fragColor = Color;"
		"}";

Создаю и линкую шейдерную программу:
unsigned int vShader = glCreateShader(GL_VERTEX_SHADER);
	glShaderSource(vShader,1, &vsSource,NULL);
	glCompileShader(vShader);
	unsigned int fShader = glCreateShader(GL_FRAGMENT_SHADER);
	glShaderSource(fShader, 1, &fsSource, NULL);
	glCompileShader(fShader);
	shaderProgram = glCreateProgram();
	glAttachShader(shaderProgram, vShader); 
	glAttachShader(shaderProgram, fShader); 
	glLinkProgram(shaderProgram);

Задаю массив вершин/цветов:
float vertices[] = {
		//координаты      //цвет
	-0.8f, -0.8f, 0.0f,  1.0f, 0.0f, 0.0f,
	0.8f, -0.8f, 0.0f,   0.0f, 1.0f, 0.0f,
	0.0f, 0.8f, 0.0f,     0.0f, 0.0f, 1.0f };

Создаю буферы:
glGenBuffers(1, &VBO);
	glGenVertexArrays(1, &VAO);
	glBindVertexArray(VAO);
	glBindBuffer(GL_ARRAY_BUFFER, VBO);
	glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
	glEnableVertexAttribArray(0);
	glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), nullptr);
	glEnableVertexAttribArray(1);
	glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), reinterpret_cast<void*>
		(sizeof(float) * 3));
	glBindBuffer(GL_ARRAY_BUFFER, 0);
	glBindVertexArray(0);

Вот функция рендера:
void renderScene() {

	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	glUseProgram(shaderProgram);
	glBindVertexArray(VAO);
	glDrawArrays(GL_TRIANGLES,0,3);

	glutSwapBuffers();
}

В моем массиве вершин/цветов заданы 3 точки, одна красная, вторая синяя, третья зеленая. Только выходной треугольник белый почему-то. Где я накосячил?
  • Вопрос задан
  • 16 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы