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试图翻译物体,但相机也翻译,我不需要的主要内容,如果未能解决你的问题,请参考以下文章