Direct3D9: (WARN) :Ignoring redundant SetTextureStageState

1 minute read

개인 프로젝트를 하던 중 Direct3D 9의 Debug Output Level을 최대로 올리고 실행했다. 보이는 건 토할 정도로 많은 워닝 메시지들뿐.

...
Direct3D9: (WARN) :Ignoring redundant SetTextureStageState. Stage: 0, State: 1
Direct3D9: (WARN) :Ignoring redundant SetTextureStageState. Stage: 0, State: 2
Direct3D9: (WARN) :Ignoring redundant SetTextureStageState. Stage: 0, State: 3
Direct3D9: (WARN) :Ignoring redundant SetTextureStageState. Stage: 0, State: 4
...

중복된 텍스쳐 스테이지 스테이트 설정때문에 나는 워닝이다. 이 워닝을 보지 않으려면 랜더링 코드 이전에 IDirect3DStateBlock9으로 사용할 디바이스 스테이트들을 캡쳐하고 랜더링 코드에서 사용하면 된다.

혹시나 싶어 다이렉트 X 예제(Tutorial 5: Textures)를 실행 시켜봐도 이런 워닝은 여전히 발생한다.

처음 SetTextureStageState 함수를 호출할 때도 워닝이 발생하는 경우가 있는데, 그건 기본값때문에 그렇다.

-----------------------------------------
texture stage : 0
D3DTSS_COLOROP			:4
D3DTSS_COLORARG1 		:2
D3DTSS_COLORARG2 		:1
D3DTSS_ALPHAOP 			:2
D3DTSS_ALPHAARG1 		:2
D3DTSS_ALPHAARG2 		:1
D3DTSS_BUMPENVMAT00         	:0
D3DTSS_BUMPENVMAT01         	:0
D3DTSS_BUMPENVMAT10         	:0
D3DTSS_BUMPENVMAT11         	:0
D3DTSS_TEXCOORDINDEX         	:0
D3DTSS_BUMPENVLSCALE         	:0
D3DTSS_BUMPENVLOFFSET         	:0
D3DTSS_TEXTURETRANSFORMFLAGS    :0
D3DTSS_COLORARG0         	:1
D3DTSS_ALPHAARG0         	:1
D3DTSS_RESULTARG         	:1
D3DTSS_CONSTANT             	:0

-----------------------------------------
texture stage : n [1,7]
D3DTSS_COLOROP             	:1
D3DTSS_COLORARG1         	:2
D3DTSS_COLORARG2         	:1
D3DTSS_ALPHAOP             	:1
D3DTSS_ALPHAARG1         	:2
D3DTSS_ALPHAARG2         	:1
D3DTSS_BUMPENVMAT00         	:0
D3DTSS_BUMPENVMAT01         	:0
D3DTSS_BUMPENVMAT10         	:0
D3DTSS_BUMPENVMAT11         	:0
D3DTSS_TEXCOORDINDEX         	:n
D3DTSS_BUMPENVLSCALE         	:0
D3DTSS_BUMPENVLOFFSET         	:0
D3DTSS_TEXTURETRANSFORMFLAGS    :0
D3DTSS_COLORARG0         	:1
D3DTSS_ALPHAARG0         	:1
D3DTSS_RESULTARG         	:1
D3DTSS_CONSTANT             	:0

이제 원인을 확실하게 알았으니 맘 편하게 무시. Debug Output Level은 한 단계 낮추고 실행하기로 했다.