三角形未正确呈现
Triangle isn't rendering correctly
我正在尝试渲染随时间旋转的 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);
}
您错过了一个 glClear(GL_COLOR_BUFFER_BIT)
电话。结果,您在前一个三角形上绘制了旋转的三角形。
我正在尝试渲染随时间旋转的 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);
}
您错过了一个 glClear(GL_COLOR_BUFFER_BIT)
电话。结果,您在前一个三角形上绘制了旋转的三角形。