У меня есть этот код, который почти работает нормально, но он отбирает передние грани вместо задних:
auto scaleMatrix = glm::scale(glm::mat4(1.0f), glm::fvec3(0.5f, 0.5f, 0.5f));
auto rotateMatrix = glm::rotate(glm::mat4(1.0f), glm::degrees(rotation), glm::fvec3{.0f, 1.f, 0.f});
auto modelMatrix = rotateMatrix * scaleMatrix;
int w, h;
glfwGetWindowSize(window, &w, &h);
auto perspectiveMatrix = glm::perspective(90.f, w/(float)h, .1f, 100.f);
auto viewMatrix = glm::lookAt(
glm::vec3(-1, 0, -1),
glm::vec3(0, 0, 0),
glm::vec3(0, 1, 0)
);
auto mvp = perspectiveMatrix * viewMatrix * modelMatrix;
glUniformMatrix4fv(gMVPLocation, 1, GL_FALSE, &mvp[0][0]);
Если я только передаю матрицу модели в шейдер, правильные грани отбраковываются,Но если я передаю матрицу MVP, передние грани отбраковываются, а задние грани отображаются.Не уверен, почему это может вызвать эту проблему, но мои вершины определены в порядке намотки по часовой стрелке и отлично работают, если я не использую матрицу вида или перспективы.Я не знаю, почему это здесь не работает.