2012-03-12 28 views
0

我的着色器隱式地將一個int轉換爲float,這會導致C7011警告。任何方式來抑制GLSL中的警告?

int i = 1; 
float f = i; 

我不在乎,從來不會在乎這個警告。但是,當試圖調試我的着色器時,我必須通過一堆警告來發現錯誤。有什麼辦法可以抑制這些警告嗎?

我試着查找#pragma的選項,但找不到任何東西。

在此先感謝。

+0

你試過了嗎?float f =(float)i;'? – 2012-03-12 16:56:20

+1

@dark_charlie:這是GLSL,而不是C.這不適用於GLSL。 – 2012-03-12 17:39:44

+0

@NicolBolas它在HLSL中工作正常,我認爲它可以在GLSL中工作:) – 2012-03-12 21:26:46

回答

2

不知道這是否對您有所幫助,但可以查看您正在使用的glsl版本的快速參考。根據4.20 GLSL快速參考表的第7頁,在http://www.khronos.org/files/opengl42-quick-reference-card.pdf發現,你可以使用float f = float(i),我認爲我不在目前可以測試的計算機上。

如果這不起作用,您可能想要查看在同一參考表的第9頁上找到的intBitsToFloat函數。雖然它只存在於3.3及更高版本的glsl版本上,但如果您使用的是該版本或更高版本,它可能會爲您提供所需的轉換。

+0

'float(f)'工作。謝謝。我曾希望有一個不太符合語法的醜陋方法。 對於float爲INT,還有精度的損失,但對於int浮動,動態範圍小的損失看起來像是編譯器不應該抱怨。 我想這就是事情。 – sharoz 2012-03-12 18:00:19