Presentation is loading. Please wait.

Presentation is loading. Please wait.

Ch6 :: 텍스처링 Radiance team.

Similar presentations


Presentation on theme: "Ch6 :: 텍스처링 Radiance team."— Presentation transcript:

1 ch6 :: 텍스처링 Radiance team

2 턱스처링 개요 텍스처 매핑 :: - 이미지 테이터를 삼각형에 입힐 수 있게 하는 테크닉 - 세밀함, 사실감 높여줌
- IDirect3DTexture9 인터페이스 사용

3 6.1 텍스처 좌표 U축 :: 수평으로 진행하는 축 양의 방향 :오른쪽 양의 방향 : 아래족 v축 :: 수직으로 진행하는 축
좌표 간격 (0,1)로 정규화 -> 다양한 크기의 텍스처 이용 텍스처 상의 매핑 될 삼각형 영역 정의 i) 버텍스 구조체 수정 ii) 텍스처 위의 버텍스 정의하는 텍스처 좌표쌍 추가 - D3DFVF_TEX1을 추가하여 버텍스 구조체에 한쌍의 텍스처 좌표가 포함되어 있음을 지정

4 6.2 텍스처의 작성과 활성화 텍스처 데이터 :: 디스크에 보관된 이미지파일에서 읽혀져 IDirect3DTexture9객체로 로드됨 HRESULT D3DXCreateTextureFromFile( LPDIRECT3DDEVICE9 pDevice, // 텍스처를 만들어낼 장치 LPCSTR pSrcFile, // 이미지를 읽어들일 파일명 LPDIRECT3DTEXTURE9* ppTexture // 만들어진 텍스처를 받을 포인터 );

5 6.2 텍스처의 작성과 활성화 Ex) stonewall.bmp라는 파일에서 텍스처를 만든다
IDirect3Dtexture9* _stonewall; D3DXCreateTextureFromFile(_device, “stonewall.bmp”, &_stonewall); 현재 텍스처를 지정하는 메서드 HRESULT IDirect3Device9::SetTexture( DWORD Stage, // 0-7범위의 값으로 텍스처를 지정 // stage – 이어지는 노트를 참고한다 IDirect3DBaseTexture9* pTexture // 지정할 텍스처의 포인터 Device->SetTexture(0, _stonewall);

6 6.3 필터 텍스처는 스크린 스페이스에서 삼각형에 입혀짐 텍스처 삼각형과 스크린 삼각형의 크기는 서로 다르다
- 텍스처삼각형이 스크린삼각형보다 작은 경우 : 텍스처삼각형 확대 큰 경우 : 텍스처삼각형 축소 왜곡발생함 -> 필터링 통해 왜곡 현상 줄임 품질이 높아질수록 속도 저하 IDirect3DDevice9::SetSamplerState 이용

7 6.3 필터 선형 샘플링(Linear filtering) 근접점 샘플링(Nearest point sampling)
- 디폴트 필터링 방식 - 가장 떨어지는 품질, 가장 빠른 속도 Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXT_POINT Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXT_POINT 선형 샘플링(Linear filtering) - 비교적 높은 품질, 실행속도 또한 빠른편 -보통 선형 필터링을 권장함 Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXT_LINEAR Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXT_LINEAR

8 6.3 필터 비등방성 샘플링(Anisotropic filtering) - 가장 높은 품질, 실행속도 가장 느림
Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXT_ANISOTROPIC); Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXT_ANISOTROPIC); - 필터링의 품질을 경하는 D3DSAMP_MAXANISOTROPY레벨 지정 - 높은 값을 지정할수록 높은 품질 - 값의 범위 : D3DCAPS9구조체를 확인 Device->SetSamplerState(0, D3DSAMP_MINFILTER, 4);

9 6.4 밉맵 밉맵 :: - 텍스처의 크기를 급격하게 변경하는 것을 막는 테크닉 - 디테일을 보존하면서
여러개 작은 해상도로 텍스처 만드는 방식

10 6.4.1 밉맵 필터 밉맵 필터 지정 Filter부분 옵션 - D3DTEXF_NONE :: 밉맵 이용하지 않음
Device->SetSamplerState(0, D3DSAMP_MIPFILTER, Filter); Filter부분 옵션 - D3DTEXF_NONE :: 밉맵 이용하지 않음 D3DTEXF_POINT :: 스크린 삼각형과 가장 비슷한 크기의 밉맵 레벨을 선택 - D3DTEXF_LINEAR :: 가장 비슷한 두개의 밉맵레벨에 min과 mag필터에 따른 필터링 적용

11 6.4.2 밉맵 이용하기 D3DXCreateTexureFromFile을 이용해 자동으로 밉맵체인 생성
밉맵의 구성과 이용에 필요한 대부분 과정은 자동처리

12 6.5 어드레스 모드 텍스처좌표의 범위가 (0,1)을 넘어 설 수도 있다
어드레스 모드 :: wrap, boder, color, clamp, mirror //wrap if( ::GetAsyncKeyState(‘W’) & 0x8000f ) { Device->SetSamplerState (0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP); Device->SetSamplerState (0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP); } //border if( ::GetAsyncKeyState(‘B’) & 0x8000f ) Device->SetSamplerState (0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER); Device->SetSamplerState (0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER); Device->SetSamplerState (0, D3DSAMP_BORDERCOLOR, 0x000000ff); //clamp if( ::GetAsyncKeyState(‘C’) & 0x8000f ) Device->SetSamplerState (0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP); Device->SetSamplerState (0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); //mirror if( ::GetAsyncKeyState(‘M’) & 0x8000f ) Device->SetSamplerState (0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR); Device->SetSamplerState (0, D3DSAMP_ADDRESSV, D3DTADDRESS_MIRROR);


Download ppt "Ch6 :: 텍스처링 Radiance team."

Similar presentations


Ads by Google