'뺄셈합성'에 해당되는 글 1건

  1. directx9.0 합성 종류 1 2008.11.02

                            합성 하는 이미지




선형 합성
 이미 그려진 색과 지금부터 렌더링 하려고 하는 폴리곤의
색을 다음과 같은 비율로 합성
최종색 = (1 - α) * 바닥색 * α * 덮일색.

α(opacity)
0 ~ 0xff 까지 0x7f 이면 50% : 50% 로 표현됨
 정점의 α 값에 따라서 합성되는 강도가 바뀜





덧셈 합성

 최종색 = 바닥색 + α * 덮일색
 α 의 값이 커지는 것 만큼 , 위에 그려지는 폴리곤을 강하게 합성됨
 폴리곤을 여러 번 합치면 백색화면이 됨
 게임에서 빛의 눈부심을 표현하기 위하여 많이 사용
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);


뺄셈 합성

최종색 = 바닥색 - α * 덮일색
폴리곤을 여러 번 합치면 검은화면이 됨
SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_REVSUBTRACT);
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
그림자 표현에 많이 쓰임


곱셈합성

최종색 = 바닥색 * 덮일색
SetRenderState (D3DRS_DESTBLEND, D3DBLEND_SRCCOLOR);
SetRenderState (D3DRS_SRCBLEND, D3DBLEND_ZERO);




제곱 합성

어두운 곳은 더 어둡게 하고 밝은 곳은 더 밝게 !
최종색 = 바닥색 * 바닥색
바닥색을 제곱해서 색의 채도를 강조.
제곱 합성은 렌더링 하는 폴리곤의 색이나 알파값에 영향을 받지 않음
폴리곤을 입혀 렌더링해도 텍스쳐는 효과를 미치지 않음
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_DESTCOLOR);
SetRenderState (D3DRS_SRCBLEND, D3DBLEND_ZERO);


네거티브 포지티브 반전

흰 폴리곤을 렌더링하면, 검은 부분은 희게, 흰 부분은 검게
최종색 = 바닥색 * 바닥색
게임에서 충격을 받은 표정 등에 사용됨
SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ZERO);
SetRenderState (D3DRS_SRCBLEND, D3DBLEND_INVDESTCOLOR);




위 그림들은 이미지 하나를 반투명 상태로 합성시켰기때문에 반투명 상태를 하지 않고 했을때는 조금 틀린결과가

나타날수 있어요~

위의 모든  설정은 RestoreDeviceObjects() 함수 안에서 실행되요.

,