[英]Position Vector in Vertexshader conflicts with glTranslate
我正在嘗試使用glTranslate渲染圖像並補償它:
glPushMatrix();
glTranslatef(x, y, 0.0f);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
glPopMatrix();
我還使用了着色器,並在頂點着色器中設置了頂點的位置:
in vec2 position;
in vec3 color;
out vec3 Color;
void main() {
Color = color;
gl_Position = vec4(position, 0.0, 1.0);
}
但是,這總是將正方形渲染在同一位置。 我在想這是因為位置向量始終是相同的。 如何使用此着色器,但仍然可以使用glTranslate移動圖像? 我懷疑我必須更改着色器輸入,但是如何?
glTranslatef更改MVP矩陣,該矩陣將作為統一傳遞到頂點着色器中。 在pre 150中有一個快捷方式是
gl_Position = ftransform();
當通過glVertex*
傳遞輸入矩陣時,它將轉換矩陣應用於輸入位置。
但是glsl 150 core不允許使用該制服或功能。 而是創建矩陣統一並將其傳遞給:
#version 150 core
in vec2 position;
in vec3 color;
out vec3 Color;
uniform mat4 mvp;
void main() {
Color = color;
gl_Position = mvp * vec4(position, 0.0, 1.0);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.