[英]OpenGL shader not passing variable from vertex to fragment shader
我遇到了一些非常奇怪的事情。
我有一個非常簡單的程序,它使用以下着色器管道來渲染簡單的全屏廣告牌:
頂點着色器:
#version 430
layout(location = 0) in vec2 pos;
out vec2 tex;
void main()
{
gl_Position = vec4(pos, 0, 1);
tex = (pos + 1) / 2;
}
片段着色器:
#version 430
in vec2 tex;
out vec3 frag_color;
void main()
{
frag_color = vec3(tex.x, tex.y, 1);
}
該程序始終將四邊形呈現在正確的位置(因此我已經排除了VAO的罪魁禍首),但是由於某種原因,我忽略了我為tex設置的任何值,並將其始終設置為vec2(0,0),從而呈現一個藍色框。
我在這里想念什么嗎? 我以前做過許多opengl應用程序,但從未遇到過。 :/
我已經看到OpenGL 2.0的實現在添加浮點數而不是顯式轉換整數時在編譯時遇到問題。
即使這不是問題,我認為在4.3實現上也是可能的,也許您應該只在“整數”常量中添加點和后綴。
您的最后一行是頂點着色器,似乎是唯一可能出現問題的行(我相信值總是在構造函數:p中強制轉換),因此您將擁有如下所示的東西:
tex = (pos + 1.0f) / 2.0f;
請記住,您是着色器,可以在數千種不同的實現上進行編譯,因此始終保持顯式是一個好習慣!!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.