2012-03-12 2 views
0

내 셰이더는 int를 float로 암시 적으로 캐스팅하므로 C7011 경고가 발생합니다.GLSL에서 경고를 표시하지 않으려면 어떻게해야합니까?

int i = 1; 
float f = i; 

나는이 경고에 신경 쓰지 않으며 결코 신경 쓰지 않을 것입니다. 그러나 쉐이더를 디버깅하려고 할 때 오류를 찾기 위해 이러한 경고를 여러 번 검토해야합니다. 이 경고를 표시하지 않을 방법이 있습니까?

#pragma에 대한 옵션을 찾아 보았지만 아무 것도 찾을 수 없었습니다.

미리 감사드립니다.

+0

'float f = (float) i;'시도한 적이 있습니까? –

+1

@dark_charlie : 이것은 GLSL이지 C가 아닙니다. GLSL에서는 작동하지 않습니다. –

+0

@NicolBolas HLSL에서 잘 작동합니다. GLSL에서도 작동 할 수 있다고 생각했습니다. –

답변

2

이것이 도움이 될지 모르지만 사용중인 glsl 버전에 대한 빠른 참조를 확인하십시오.에있는 4.20 GLSL 빠른 참조 시트의 7 페이지에 따르면, 그냥 float f = float (i)로 갈 수 있다고 생각합니다. 컴퓨터에 있지 않아 현재 테스트 할 수 있다고 생각합니다.

그래도 문제가 해결되지 않으면 동일한 참조 시트 9 페이지에있는 intBitsToFloat 기능을 확인하십시오. glsl 버전 3.3 이상에서만 존재하지만, 해당 버전 이상을 사용하고 있다면 원하는 변환을 제공 할 수 있습니다.

+0

'float (f)'가 작동합니다. 감사. 나는 구문 론적으로보기 흉한 방법을 사용하기를 바랬다. float to int의 경우 정밀도가 떨어지지 만 int가 부동 소수점 형인 경우 동적 범위의 작은 손실은 컴파일러가 불평해서는 안되는 것 같습니다. 나는 그저 그런 것들 일 것이라고 생각합니다. – sharoz

관련 문제