본문 바로가기

프로그래밍/C++

ID3DXSprite Flush() Function

 

ID3DXSpriteInterface.pdf
0.02MB

ID3DXSprite 의 Flush 함수의 정의는 다음과 같다.

 

Flush Forces all batched sprites to be submitted to the device. Device states remain as they were after the last call to ID3DXSprite::Begin. The list of batched sprites is then cleared.

 

모아둔 스프라이트 이미지들을 장치로 제출한다는 의미인데, 이것만 보면 도대체 무슨 소리인지 모른다;

 

 

 

예시를 보면 이해가 쉽다.

 

ID3DXSprite ->Flush();

m_pd3dd->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);

m_pd3dd->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ZERO);

m_pd3dd->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);

ID3DXSprite -> Draw();

 

보통 RenderState의 영향을 안받기 위해 사용한다.

 

ID3DXSprite 의 Draw 함수는 호출될때마다 하나씩 그리는 방식이 아니라,

 

이미지들을 차곡차곡 모아둬서 한번에 그리는 방식이다.

 

따라서 flush()를 사용하지 않고, RenderState를 변경하면 앞단에서 호출되고 있는 이미지들도 영향을 받는다.

 

그래서 영향을 받지 않기 위해 일단 쌓여있는 것들을 비우고(Flush)라는 의미로 사용한다고

 

이해하면 된다.

 

끝~