[英]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解決了這個問題。
干杯。
在in
和out
關鍵字,你告訴他們是GLSL v3和更高版本。 對於v1(你正在嘗試使用它?),你需要用attribute
替換in
,並在頂點着色器中varying
out
。 在片段着色器,替換in
用varying
,你不能用out
-你需要輸出到gl_FragColor
你似乎做的事情。
所以你的第二個/第三個着色器看起來你已經正確地將第一個着色器中的GLSL v3代碼翻譯成GLSL v1,看起來它們應該與ES2 / GLSL v1一起使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.