본문 바로가기
게임 공부/DirectX

D3DXCreateTextureFromFileEx 함수의 color key

by woohyeon 2020. 6. 23.
반응형

텍스쳐를 생성하는 함수로 D3DXCreateTextureFromFileEx() 라는 함수가 있다. (아래 함수와 동일)

 

위 함수의 인자 중 ColorKey라는 부분이 있는데, 이 부분은 텍스쳐(이미지) 중 나타내지 않을 색상을 표시한다. 예를 들어 다음과 같은 그림을 그리고 싶은데 배경색인 검정색은 제외하고 삼각형 모형만 그리고 싶을 때 검정색을 컬러키로 지정해주면 된다.

 

컬러키의 타입을 보면 D3DCOLOR라는 타입인데 이는 ARGB라는 속성을 가진다. RGB는 레드, 그린, 블루이고 A는 Alpha의 의미고 각 값의 범위는 0~255이다. 여기서 알파란 RGB에 대한 투명도이다. 예를 들어 RGB(0,0,0)이 검정을 나타내는데 이를 투명하게 할 것이므로 알파값(투명도)을 255로 설정한다. 즉 ARGB(255, 0, 0, 0)이 된다. 이를  D3DCOLOR으로 표현하기 위해선 16진수로 표현해야 한다. 255는 16진수로 0xFF이고 0은 0x00이다. 따라서 네 개의 값은 0xFF000000으로 표현한다. 혹은 다음과 같이 객체를 만들어 표현할 수 있다. 알파를 0으로 설정하면 투명도가 0이 되므로 위 그림은 검정색까지 그대로 표현된다.

auto colorKey = D3DCOLOR_ARGB(0xFF, 0x00, 0x00, 0x00);

 

이와 별개로 ID3DXSprite::Draw 함수에도 컬러값이 존재하는데 여기에는 텍스쳐에서 어떤 색을 표현할지를 결정한다. 

msdn

만약 그림 그대로 모든 색을 표현하고 싶다면 R,G,B의 값을 모두 1.0f로 설정해준다. 여기서 알파는 전체적인 그림에 대한 투명도이다. 참고로 아까 컬러키에서 제외한 색상은 그대로 유지된다. 만약 여기서 레드의 값을 0으로 하면 위 그림의 빨간색상은 아래와 같이 검정색으로 표현된다. 색상을 표시할 땐 D3DCOLOR의 이름을 이용하여 D3DCOLOR(1.f, 1.f, 1.f, 0.5f)와 같이 생성자를 이용하여 표시할 수도 있는데 이때는 ARGB 순서가 아니라 RGBA 이므로 주의한다.

 




댓글