【问题标题】:Triangle isn't rendering correctly [closed]三角形未正确渲染[关闭]
【发布时间】:2021-05-04 07:50:11
【问题描述】:

我正在尝试渲染一个随时间旋转的 2D 三角形,但渲染不正确。它从一个普通的三角形开始,但后来变成了我根本无法解释的东西。有人可以解释这里发生了什么吗?

我的意思是视频:https://imgur.com/a/aWilS6Q

... ...

这是我构建场景的方式:

void Camera::UpdateCamera(struct Level* lvl) {

    Shader::SetShaderProgram(lvl->shader.GetShaderID());
    glBindVertexArray(lvl->model.getVAO());

    //model scene
    glm::mat4 model = glm::mat4(1.0f);
    model = glm::rotate(model, (float)glfwGetTime() * glm::radians(50.0f), glm::vec3(0.5f, 1.0f, 0.0f));

    //view scene
    glm::mat4 view = glm::mat4(1.0f);
    view = glm::lookAt(lvl->cam.m_cameraPos, lvl->cam.m_cameraPos + lvl->cam.cameraFront, lvl->cam.cameraUp);

    //projection scene
    glm::mat4 projection = glm::mat4(1.0f);
    if (lvl->cam.changeProjection)
    {
        projection = glm::perspective(glm::radians(90.0f), (float)800 / (float)600, 0.1f, 100.0f);
        lvl->cam.changeProjection = false;
    }

    //Set scene uniforms for vertex shader
    Shader::setMat4(lvl->shader.GetShaderID(), "model", model);
    Shader::setMat4(lvl->shader.GetShaderID(), "view", view);
    Shader::setMat4(lvl->shader.GetShaderID(), "projection", projection);

}

这是我的绘图命令:

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

这是我的顶点着色器代码:

#version 450 core
layout (location = 0) in vec3 aPos;

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

void main()
{
    gl_Position = model * view * projection *vec4(aPos, 1.0f);
}

【问题讨论】:

  • 必须是gl_Position = projection * view * model * vec4(aPos, 1.0f);

标签: c++ opengl 3d rendering render


【解决方案1】:

您错过了glClear(GL_COLOR_BUFFER_BIT) 电话。结果,您在前一个三角形上绘制了旋转的三角形。

【讨论】:

  • 你让我非常高兴。我整整一周都在寻找这个错误。非常感谢 Yakov Galka!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 2018-05-19
相关资源
最近更新 更多