簡體   English   中英

GLSL 1.0.0 - 在頂點和片段着色器中使用“變化”時遇到麻煩

[英]GLSL 1.0.0 - Trouble using “Varying” in vertex and fragment shaders

我正在使用OpenGL ES 2.0.0和GLSL ES 1.0.0進行開發。

目前我正在渲染一個正方形來篩選屏幕,現在嘗試應用紋理。

我在頂點和片段着色器中使用“ 變化 ”時遇到問題,收到錯誤消息:

- Failed to compile vertex shader - 
0(3) : error C5060: out can't be used with non-varying tex_varying

in vec4 texture_coord ;
in vec4 position ;
out vec2 tex_varying ;
uniform mat4 translate ;
void main ( ) 
{
  gl_Position = translate * position ;
  tex_varying = texture_coord . xy ;
}

我已經閱讀了文檔,無法弄清楚我做錯了什么。

這是代碼。

頂點:

attribute vec4 position; 
attribute vec4 texture_coord; 
varying vec2 tex_varying; 
uniform mat4 translate; 

void main()
{ 
  gl_Position = translate * position; 
  tex_varying = texture_coord.xy;
}

分段:

varying vec2 tex_varying; 
uniform sampler2D texture; 

void main()
{
  gl_FragColor = texture2D(texture, tex_varying);
}

決議:這是一個遲到的回復,但我很久以前就解決了這個問題 - 萬一其他人偶然發現了這個問題。 事實證明,“tex_varying”是由Nvidia保留的! 簡單地重命名tex_varying解決了這個問題。

干杯。

inout關鍵字,你告訴他們是GLSL v3和更高版本。 對於v1(你正在嘗試使用它?),你需要用attribute替換in ,並在頂點着色器中varying out 在片段着色器,替換invarying ,你不能用out -你需要輸出到gl_FragColor你似乎做的事情。

所以你的第二個/第三個着色器看起來你已經正確地將第一個着色器中的GLSL v3代碼翻譯成GLSL v1,看起來它們應該與ES2 / GLSL v1一起使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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