3D 랜더링을 하기 위해서는 비디오 메모리에 출력할 좌표 공간의 점들을 입력해야 합니다.(이 점들을 정점이라고 합니다)
이때 X, Y, Z의 좌표값 외에 rhw의 값을 쓸껀지, 정점에 색을 넣을껀지들을 정해줘야 하는데, 이 값들을 원하는 것만 넣기 위해, FVF포멧을 이용해서 사전에 넣을 값들을 지정해 줍니다.
그리고 그 데이터 포멧 순서대로 값을 넣어주는 것이죠...
(저도 확신할 정도의 수준은 아니지만, 제가 이해한 바는 이것입니다.)
↓ 틀린거 있으면 지적해주세요.
2006.07.30 22:08:16 (*.59.76.31)
Excelsis
좀 알아듣기 쉽게 다른거랑 비교해서 설명하자면, 2D 이미지에 보면 ARGB 포맷같은게 있습니다.
거기서 또 A8R8G8B8 식으로 8비트씩 붙여서 만든 게 있는가 하면, A4R4G4B4 같이 4바이트씩 붙여서 만든 포맷도 있고 R5G6B5 같은 alpha 값이 아예 없는 포맷도 있습니다.
심지어는 P8 이라고, 팔렛트 만들어놓고 8비트만 가지고 서술하는 것도 있습니다. (256색)
이 포맷들이 결국 뜻하는 바는 하나의 점을 구성하는 데 몇개의 비트가 들어가는지를 보여줍니다. 256 * 256 이미지에는 65536개의 점이 있는데, 여기서 그 점 하나하나의 용량을 곱하면 실제 이미지 용량이 되겠죠?
(귀찮으니 헤더는 빼고 생각합시다-_-)
마찬가지로 FVF 역시 하나의 점을 찍는 데 얼마의 비트 수를 배정하는지, 어떤 기능을 사용할지를 결정합니다. X, Y, Z 는 각각 4바이트(float)이고, rhw역시 4바이트, 텍스쳐 위치매핑용 uv 좌표 역시 각각 4바이트 어쩌구저쩌구 해서 다 합치면 점 하나가 용량 얼만지 알 수 있습니다.
2006.07.30 22:08:35 (*.187.44.29)
cretom
(지적 아닙니다;) 버텍스에 들어가는 정보는 XYZ좌표,RHW,텍스쳐좌표,색깔값 등등이 있는데 님이 쓰는 버텍스가 XYZ정보만 가지고 있다면, D3DFVF_XYZ이렇게 해주심 되구요.. XYZ값,텍스쳐좌표정보를 가지고있다면 D3DFVF_XYZ|D3DFVF_TEX1 이렇게 Direct3D에 알려주는겁니다
2006.07.30 22:09:18 (*.187.44.29)
cretom
앗 글쓰는도중 위엣분이 써놓으셨네요 ㅎㅎ
2006.07.30 22:34:01 (*.28.55.118)
랩하는좀비
답변 감사드립니다.
음음. 그러니까 버텍스 하나하나에 들어갈 정보들을 미리 선언하는 것인가요?
2006.07.31 19:41:35 (*.38.167.140)
자갈공명
버텍스 포멧이 딱 고정된것만 쓰는게 아니기때문에 내가 이번에 쓸 버텍스에는 이런이런게 들어있다 라고 알려주는겁니다.
DX입장에서 또는 라이브러리를 만드는 입장에서 생각해 보시면 좀더 이해가 수월할듯 합니다.
어머니가 100만원을 아무말없이 주셨는데 왜 주셨는지는 모르고 횡재했다라는 생각에 '아싸' 하고 이것저것 질러서 남은게 10만원도 안되는데
나중에 알고보니 학원비+보충수업비+교통비+밥값+용돈이었다면 ....대략난감한 사태가 발생하니까요.
이때 X, Y, Z의 좌표값 외에 rhw의 값을 쓸껀지, 정점에 색을 넣을껀지들을 정해줘야 하는데, 이 값들을 원하는 것만 넣기 위해, FVF포멧을 이용해서 사전에 넣을 값들을 지정해 줍니다.
그리고 그 데이터 포멧 순서대로 값을 넣어주는 것이죠...
(저도 확신할 정도의 수준은 아니지만, 제가 이해한 바는 이것입니다.)
↓ 틀린거 있으면 지적해주세요.