我正在WebGL中運行一些實驗,其中一個是XOR效果片段着色器。出於某種原因,所有的按位運算符都在GLSL中保留,並在使用時導致編譯器錯誤。爲什麼這些運營商非法?我可以使用什麼來代替|在這種情況下?GLSL - 爲什麼預留位運算符?什麼是使用按位運算的好替代(浮點運算按位模擬)
回答
在GLSL 1.0規範中,它們被保留「供將來使用」,這是1.3規範。它允許使用無符號和有符號整數,包括標量和矢量。
你應該
#version 130
謝謝,我想1.3版不支持Chromium的webgl,因爲我得到的錯誤'ESSL不支持的版本號' – schellsan 2010-08-23 17:02:36
大多數情況下,您可以用if():i = 0解決xor問題。如果(cond1)i ++; if(cond2)i ++;如果(i == 1)... – Calvin1602 2010-08-23 17:15:37
邏輯XOR,是的...但問題是*位* XOR;你如何解決這個問題? – LarsH 2011-05-18 19:32:19
開始你的shader我就遇到了這個問題太多,例如試圖使用Chrome在Shader Toy中運行Slisesix。
This question有兩個答案,顯示瞭如何在不使用按位運算符的情況下實現按位異或。他們可能會很慢,但在某些情況下,他們會很快。有總比沒有好。
您可能還會看到+
是否足夠接近按位XOR,取決於您的要求。
謝謝!我希望我也可以選擇這個答案。 – schellsan 2011-05-19 22:06:33
- 1. 爲什麼使用按位運算符檢查鼠標點擊?
- 2. 按位運算符
- 3. 按位運算
- 4. 什麼是按位AND運算符&做什麼?
- 5. 利用按位運算符有什麼好方法?
- 6. CUDA:爲什麼按位運算符有時比邏輯運算符更快?
- 7. 爲什麼我們使用按位運算符?
- 8. 爲什麼要使用按位運算符?
- 9. 不使用算術運算或按位運算符的加法
- 10. 按位運算符左移
- 11. JavaScript和按位運算符
- 12. 按位'&'運算符on uint
- 13. 按位餘數運算符
- 14. 按位不運算符
- 15. Haskell按位運算符Data.Bits
- 16. C++'>'按位運算符
- 17. 按位補運算符
- 18. 奇怪的按位運算符組合的目的是什麼?
- 19. 不應使用按位運算符來代替邏輯運算符
- 20. 爲什麼此算法在Java中使用按位和運算符?
- 21. 按位算術和運算符
- 22. 爲什麼這個語句與按位運算符相同呢?
- 23. 如何使用按位運算符
- 24. 位運算符
- 25. OCaml中的按位運算
- 26. Python中的按位運算
- 27. 這個例子中的按位運算符&做什麼?
- 28. 按位運算符意外行爲
- 29. 爲什麼移位運算符似乎循環64位整數?
- 30. Lua - 按位邏輯運算
您提到了XOR效應,但後來你說「而不是'|'」(按位或運算符)。你的意思是「而不是'^'」? – LarsH 2011-05-18 19:32:57
那麼,我是第一個效果這個帖子 - http://mrdoob.com/blog/post/623作者稱它爲'異或'效應,所以猴子看到猴子這樣做。它的名字可能與效果的外觀有關,而不是影響它的代碼。 – schellsan 2011-05-19 17:23:24