簡體   English   中英

Vertexshader中的位置向量與glTranslate沖突

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM