OpenGL试图翻译物体,但相机也翻译,我不需要

Posted

技术标签:

【中文标题】OpenGL试图翻译物体,但相机也翻译,我不需要【英文标题】:OpenGL Trying to translate object, but the camera also translates, which I don't need 【发布时间】:2016-01-17 14:11:30 【问题描述】:

我正在尝试翻译云纹理。但是,相机也以这种方式翻译,这是我不想要的。所以只是移动的云,没有其他东西在移动。

我如何翻译云:

MatrixID = glGetUniformLocation(programID, "MVP");
transID = glGetUniformLocation(programID, "transformation");

glm::mat4 translate = glm::translate(glm::mat4(1.f), glm::vec3(cloudTranslation, 0.0f, 0.0f));
glUniformMatrix4fv(transID, 1, GL_FALSE, 
glm::value_ptr(translate));
cloudTranslation += 1.0f;

顶点着色器:

#version 330 core

layout(location = 0) in vec3 position;
layout(location = 1) in vec2 uvVerts;

out vec2 uv;

uniform mat4 MVP;
uniform mat4 transformation;

void main()
    gl_Position =  MVP * transformation * vec4(position,1);
    uv = uvVerts;

我希望任何人都可以看到问题。

注意: 是的,我将 MVP(modelviewprojection matrix) 与转换矩阵相乘,否则我什至不知道如何移动云。

我希望我已经足够清楚了。

【问题讨论】:

我并不完全清楚你在追求什么。显而易见的解决方案是,您只在渲染云时设置翻译,并在渲染其他所有内容时重置它。还有什么其他的吗? 但是如何设置翻译而不翻译其余部分? 您可以通过使用不同的矩阵调用 glUniformMatrix4fv 来重置它。 好的,没有更舒适的方法吗?我认为每次都重置统一变量非常浪费行。 @PythonLover17 ... 你有一个用于云的转换矩阵,一个用于其他所有的转换矩阵。你用云矩阵渲染云,其他一切都用其他矩阵。 【参考方案1】:

好的,我修好了,我忘了乘以MVP矩阵的矩阵...

【讨论】:

以上是关于OpenGL试图翻译物体,但相机也翻译,我不需要的主要内容,如果未能解决你的问题,请参考以下文章

在opengl中翻译相机有问题

理解 GLM-openGL 中的相机翻译

物体在相机周围保持距离c ++ opengl

OpenGL对象和相机阻力?

[OpenGL](翻译+补充)投影矩阵的推导

[OpenGL](翻译+补充)投影矩阵的推导