Vertex Formats ¶
3μ₯μ νμ΅λͺ©ν!!
- Direct3Dμ λκ°μ§ λͺ©μ μ μ΄ν΄νλ€.
- μ μ νννκΈ° μν μ μ°ν vertexννλ₯Ό μ΄ν΄νλ€.
- Transformed λ²ν
μ€μ Untransformed λ²ν
μ€μ μ°¨μ΄λ₯Ό μλ€.
- λ²ν
μ€ λ²νΌκ° 무μμΈμ§ μκ³ μ¬μ©λ²μ μλ€.
- μΈλ±μ€ λ²νΌκ° 무μμΈμ§ μκ³ μ¬μ©λ²μ μλ€.
Direct3Dμ λͺ©μ ¶
...
λ§μ½ D3Dλ₯Ό μ°λ μ¬λμκ² "λΉμ μ μ D3Dλ₯Ό μλκΉ?" λΌκ³ λ¬ΌμΌλ©΄, μΌλ°μ μΌλ‘ μ΄λ° λλ΅μ΄ λμ¨λ€. Z-BufferλΌλμ§, λͺ¨λΈ, λ©μ, λ²ν μ€ μ °μ΄λμ ν½μ ΈμΈμ΄λ, ν μ€μ³, κ·Έλ¦¬κ³ μν μ λν μ΄μΌκΈ°λ₯Ό νλ€. μ΄κ²μ λ§μ μΌμ νλ κ²μ²λΌ 보μΈλ€. λͺλͺμ μ μΈνλ©΄ μ΄λ° κ²λ€μ λ€μμ 컀λ€λ λ λͺ©μ μ λΆκ°μ μΈ κ²μ΄λ€. κ·Έ λκ°μ§λ Geometry Transformationκ³Ό Polygon Renderingμ΄λ€. κ°λ¨ν λ§ν΄μ D3Dμ κ΅λ¬ν μ μ²λ¦¬μ μΌκ°ν 그리기λΌλ κ²μ΄λ€. λ¬Όλ‘ μ κ²λ§μΌλ‘ λͺ¨λ μ€λͺ ν μλ μμ§λ§, μ κ°λ¨ν κ²μ λ§μμμ νλλ€λ©΄ νΌλμ€λ¬μ΄ μΌμ μ€μ΄λ€ κ²μ΄λ€.
...
λ§μ½ D3Dλ₯Ό μ°λ μ¬λμκ² "λΉμ μ μ D3Dλ₯Ό μλκΉ?" λΌκ³ λ¬ΌμΌλ©΄, μΌλ°μ μΌλ‘ μ΄λ° λλ΅μ΄ λμ¨λ€. Z-BufferλΌλμ§, λͺ¨λΈ, λ©μ, λ²ν μ€ μ °μ΄λμ ν½μ ΈμΈμ΄λ, ν μ€μ³, κ·Έλ¦¬κ³ μν μ λν μ΄μΌκΈ°λ₯Ό νλ€. μ΄κ²μ λ§μ μΌμ νλ κ²μ²λΌ 보μΈλ€. λͺλͺμ μ μΈνλ©΄ μ΄λ° κ²λ€μ λ€μμ 컀λ€λ λ λͺ©μ μ λΆκ°μ μΈ κ²μ΄λ€. κ·Έ λκ°μ§λ Geometry Transformationκ³Ό Polygon Renderingμ΄λ€. κ°λ¨ν λ§ν΄μ D3Dμ κ΅λ¬ν μ μ²λ¦¬μ μΌκ°ν 그리기λΌλ κ²μ΄λ€. λ¬Όλ‘ μ κ²λ§μΌλ‘ λͺ¨λ μ€λͺ ν μλ μμ§λ§, μ κ°λ¨ν κ²μ λ§μμμ νλλ€λ©΄ νΌλμ€λ¬μ΄ μΌμ μ€μ΄λ€ κ²μ΄λ€.
...
Vertexλ°μ΄ν°μ νν ¶
λ²ν
μ€ λ°μ΄ν°λ₯Ό νννλ λ°©λ²μ λ§μ΄ μκ³ , D3Dκ°λ°μλ€μ κ·Έλ€μκ² νΈν λ°©μμΌλ‘ μ κ·Όνλ€. μ΄λ€ λ²ν
μ€λ λ€λ₯Έ κ²λ³΄λ€ μ λ³΄κ° λ νμνκ³ λ€λ₯Έ κ²λ€μ μ’ λ λ¬λλ€.
λ²ν μ€λ₯Ό νν νλ λ°©λ²μ flexible vertex format μ€μ¬μ FVFλΌκ³ νλ€. λ²ν μ€μ νμν μ 보λ λ€μκ³Ό κ°λ€.
λ²ν μ€λ₯Ό νν νλ λ°©λ²μ flexible vertex format μ€μ¬μ FVFλΌκ³ νλ€. λ²ν μ€μ νμν μ 보λ λ€μκ³Ό κ°λ€.
~cpp position : μ μ μμΉ, κ°μ₯ μ€μν μ 보μ΄λ€. RHW : Reciprocal of the homogenous W coordinate Blending weights : λΈλλ© λ§€νΈλ¦μ€ Vertex normal Vertex point size : λ²ν μ€μ ν¬κΈ° (ν¬μΈνΈμ€νλΌμ΄νΈμμ μ¬μ©νλ€.) Diffuse color Specular color Texture coordinates
Position ¶
μ μ΄ μ΄λμλλ₯Ό λνλ΄λ μ 보μ΄λ€.
CUSTOM_VERTEXλ λ΄ λ²ν μ€ μ λ³΄κ° μ΄λ€ μ 보λ€μ λ΄κ³ μλλ₯Ό μ§μ νλ νλκ·Έμ΄κ³ , CustomVertexꡬ쑰체λ μ€μ μ 보λ₯Ό λ΄λ λλ§μ ꡬ쑰체μ΄λ€.
~cpp #define CUSTOM_VERTEX_FVF D3DFVF_XYZ struct CustomVertex { float x; float y; float z; };
CUSTOM_VERTEXλ λ΄ λ²ν μ€ μ λ³΄κ° μ΄λ€ μ 보λ€μ λ΄κ³ μλλ₯Ό μ§μ νλ νλκ·Έμ΄κ³ , CustomVertexꡬ쑰체λ μ€μ μ 보λ₯Ό λ΄λ λλ§μ ꡬ쑰체μ΄λ€.
RHW ¶
RHWλ λμΉμ’ν Wμ μμ μ
λλ€. κ·Έλ¬λ©΄ λμΉ μ’νλ 무μμ΄λ. μ΄κ²μ μ’νκ³μ λ λ€λ₯Έ μ μ
λλ€. μ΄κ² μμμΌλ‘ μ°λ¦¬λ 4μ°¨μ μ’νκ³κ° λ©λλ€.(??)
μ΄μ¨λ Wμ’νλ μ°λ¦¬κ° μΌνκΈ° νΈνκ² ν΄μ€λλ€.
μ΄μ¨λ Wμ’νλ μ°λ¦¬κ° μΌνκΈ° νΈνκ² ν΄μ€λλ€.
SeeAlso : http://member.hitel.net/~kaswan/feature/3dengine/rhw.htm
~cpp #define CUSTOM_VERTEX_FVF D3DFVF_XYZ | D3DFVF_RHW struct CustomVertex { float x, y, z; float rhw; };
Vercto Normal ¶
μ΄κ²μ 3μ°¨μ μ’νλ‘μ, κΈ°λ³Έμ μΈ x,y,zμ μμ§μΈ κ³³μ μ’νλ₯Ό μ νλ€. μ΄κ²μ λμ€μ λΉμ κ΄λ ¨λ κ³μ°μ ν λμ μ¬μ©λλ€.
~cpp #define CUSTOM_VERTEX_FVF D3DFVF_XYZ | D3DFVF_NORMAL struct CustomVertex { float x, y, z; float nx, ny, nz; };μ΄ λ Έλ§ μ’νλ₯Ό μ¬μ©νλ©΄ RHWλ μ¬μ©ν μ μλ€. (λμ ν¨κ» μ¬μ©ν μ μλ€λ λ»μ λλ€.)
Diffuse Color ¶
λ
Έλ§ μ’ν λ€μ μ€λ μ 보λ‘λ diffuse colorκ° μλ€. Diffuse colorλ κ²μ λΉμ΄ κ·Έ μ μ λ°νμ λ κ·Έ μ μμ λ°μ°νλ 컬λ¬λ₯Ό λ§νλ€. 3Dμμμ λΉμ μ€μ μνκ³Όλ λ¬λ¦¬ κ±°μ μ무μΌλ νμ§ μλ λ€λ κ²μ κΈ°μ΅νλ€.
Diffuse Colorμ ννλ D3DCOLOR(μ¬μ€μ DWORDνμ΄λ€.)νμ μ¬μ©νλ€.
Diffuse Colorμ ννλ D3DCOLOR(μ¬μ€μ DWORDνμ΄λ€.)νμ μ¬μ©νλ€.
~cpp #define CUSTOM_VERTEX_FVF D3DFVF_XYZ | D3DFVF_RHW | D3DFVF_DIFFUSE struct CustomVertex { float x, y, z; float rhw; D3DCOLOR diffuse; };
Specular Color ¶
λν¨μ¦ μ»¬λ¬ λ€μμ μ€λ μ 보μ΄λ€. μ΄κ²λ D3DCOLORκ°μ΄λ€. μ΄κ²μ ν μ μ "Shininess"λ₯Ό μλ €μ€λ€.
~cpp #define CUSTOM_VERTEX_FVF D3DFVF_XYZ | D3DFVF_RHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR struct CustomVertex { float x, y, z; float rhw; D3DCOLOR diffuse; D3DCOLOR specular; };