【发布时间】: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 ... 你有一个用于云的转换矩阵,一个用于其他所有的转换矩阵。你用云矩阵渲染云,其他一切都用其他矩阵。
标签: c++ opengl matrix translation