最近論壇看到有人提出這樣的問題:
shader "unlit/testinout"
else
}void frag(inout float4 col:color) //輸出的並不是col的顏色?????
endcg}}
}
這個問題其實是語義繫結的規則,上面的片段著色器其實輸出的是pos這個變數,並不是col。
注意:語義繫結是頂點和片段之間的橋梁,是一對一的關係,是根據型別進行匹配的,不是根據名稱去匹配的。
正確的寫法有如下幾種
方法一:增加輸入引數
shader "a958832776/testinout"
else
}void frag(in float4 pos:position,inout float4 co:color) //注意需要帶上頂點輸出的position語義
endcg}}
}
方法二:直接返回值
shader "a958832776/testinout"
else
return col;
}void frag(inout float4 co:color)
endcg}}
}
方法三:定義結構體
shader "a958832776/testinout"
;out_data vert(float2 objpos:position)
else
return data;
}float4 frag(out_data d):color
endcg}}
}
推薦使用方法三,這樣結構更清晰明了,也不會出錯。 常用技巧 輸入輸出優化 輸入輸出外掛程式
我們知道cin cout是比較慢的,不過它們可以加速。在 中加入這兩句即可 std ios sync with stdio false std cin.tie 0 加速過後cin的速度與scanf的速度近似 當然,加速過後就不要混用print和cout,scanf和cin了。因為不同步,後果會很嚴重...
uva oj java輸入輸出
真難的題目 狗屁演演算法 測資很機車 測驗結果 x.xx0 ms 測驗日期 200y mm dd author raymond wu 小璋丸 publicclassmain 載入單字的字元 while bytedata 1 else bytedata system.in.read catch exc...
檔案輸入 輸出
13.1 和檔案進行通訊 文字檢視和二進位制檢視 在文字檢視中,程式看到的內容和二進位制的內容可能不同,例如ms dos文字檔案用回車符和換行符的組合 r n來表示行尾,macintosh用乙個回車符 r來表示行尾。c程式使用乙個 n表示行尾。所以,如果c程式以文字檢視模式處理乙個ms dos文字檔...