簡體   English   中英

OpenGL着色器未將變量從頂點傳遞到片段着色器

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

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