2016-02-02 64 views
1

所以......今天寫着色器程序時,遇到了一種情況,我不得不使用'%'來查找餘數。 GLSL給了我一個錯誤,說它在當前版本中不可用。無法在glsl中使用'%'

我試過幾個問題。 GLSL不支持遞歸函數和while循環,如果我想創建一個函數可以給我(a%b)的結果,那麼循環就是需要的。

所以,我目前卡住了。有人可以幫我弄這個嗎?

編輯:我試圖使用this website中的一些着色器代碼來模擬CRT屏幕作爲參考代碼。我想修改某些行和列的像素顏色,所以我需要使用模運算符。

起初,我認爲模量函數是用'%'操作符完成的。 它沒有工作,所以我嘗試使用遞歸函數/ while循環作爲模數函數的變通辦法 ,這也不起作用。

+0

那麼您使用的是什麼版本的OpenGL? –

+1

請張貼您的相關代碼的一些片段,請參閱http://stackoverflow.com/help/mcve – kebs

+0

我得到它的工作!無論如何謝謝你幫助我。 – ArtemisToh

回答

6

GLSL不支持遞歸函數和while循環,如果我想要創建一個函數可以給我(a%b)的結果,那麼循環就是需要的。

首先,既不需要遞歸也不需要循環來計算a mod b。這很容易通過a - (b * floor(a/b))完成。

這正是內置的mod函數所做的。如果您的GLSL版本不支持%運算符,那麼您可能無法獲得真正的整數。所以只需在你的值上使用mod函數。

+0

謝謝。我能夠使用mod功能來獲得我想要的。我現在要設置這個問題來回答。 – ArtemisToh