U E D R , A S I H C RSS

2d In Direct3d/Chapter3

Vertex Formats

3μž₯의 ν•™μŠ΅λͺ©ν‘œ!!
  • Direct3D의 두가지 λͺ©μ μ„ μ΄ν•΄ν•œλ‹€.
  • 점을 ν‘œν˜„ν•˜κΈ° μœ„ν•œ μœ μ—°ν•œ vertexν˜•νƒœλΌ μ΄ν•΄ν•œλ‹€.
  • Transformed λ²„ν…μŠ€μ™€ Untransformed λ²„ν…μŠ€μ˜ μ°¨μ΄λΌ μ•ˆλ‹€.
  • λ²„ν…μŠ€ 버퍼가 무엇인지 μ•Œκ³  μ‚¬μš©λ²•μ„ μ•ˆλ‹€.
  • 인덱슀 버퍼가 무엇인지 μ•Œκ³  μ‚¬μš©λ²•μ„ μ•ˆλ‹€.


Direct3D의 λͺ©μ 

...

λ§Œμ•½ D3DλΌ μ“°λŠ” μ‚¬λžŒμ—κ²Œ "당신은 μ™œ D3DλΌ μ”λ‹ˆκΉŒ?" 라고 물으면, 일반적으둜 이런 λŒ€λ‹΅μ΄ λ‚˜μ˜¨λ‹€. Z-BufferλΌλ˜μ§€, λͺ¨λΈ, λ©”μ‹œ, λ²„ν…μŠ€ 셰이더와 픽셸세이더, ν…μŠ€μ³, 그리고 μ•ŒνŒŒ 에 λŒ€ν•œ μ΄μ•ΌκΈ°λΌ ν•œλ‹€. 이것은 λ§Žμ€ 일을 ν•˜λŠ” κ²ƒμ²˜λŸΌ 보인닀. λͺ‡λͺ‡μ„ μ œμ™Έν•˜λ©΄ 이런 것듀은 λ‹€μŒμ˜ μ»€λ‹€λž€ 두 λͺ©μ μ˜ 뢀가적인 것이닀. κ·Έ λ‘κ°€μ§€λž€ Geometry Transformationκ³Ό Polygon Rendering이닀. κ°„λ‹¨νžˆ λ§ν•΄μ„œ D3D의 κ΅λ¬˜ν•œ 점 μ²˜λ¦¬μ™€ μ‚Όκ°ν˜• κ·Έλ¦¬κΈ°λΌλŠ” 것이닀. λ¬Όλ‘  μ €κ²ƒλ§ŒμœΌλ‘œ λͺ¨λ‘ μ„λͺ…ν•  μˆ˜λŠ” μ—†μ§€λ§Œ, μ € κ°„λ‹¨ν•œ 것을 λ§ˆμŒμ†μ— ν’ˆλŠ”λ‹€λ©΄ ν˜Όλž€μŠ€λŸ¬μš΄ 일은 μ„μ–΄λ“€ 것이닀.

...

Vertexλ°μ΄ν„°μ˜ ν‘œν˜„

λ²„ν…μŠ€ λ°μ΄ν„°λΌ ν‘œν˜„ν•˜λŠ” 방법은 많이 있고, D3Dκ°œλ°œμžλ“€μ€ κ·Έλ“€μ—κ²Œ νŽΈν•œ λ°©μ‹μœΌλ‘œ μ ‘κ·Όν–ˆλ‹€. μ–΄λ–€ λ²„ν…μŠ€λŠ” λ‹€λ₯Έ 것보닀 정보가 더 ν•„μš”ν–ˆκ³  λ‹€λ₯Έ 것듀은 μ€ λ” λ‹¬λžλ‹€.

λ²„ν…μŠ€λΌ ν‘œν˜„ ν•˜λŠ” 방법을 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

점이 μ–΄λ””μžˆλ‚˜λΌ λ‚˜νƒ€λ‚΄λŠ” 정보이닀.
~cpp 
#define CUSTOM_VERTEX_FVF D3DFVF_XYZ
struct CustomVertex
{
	float x;
	float y;
	float z;
};
 

CUSTOM_VERTEXλŠ” λ‚΄ λ²„ν…μŠ€ 정보가 μ–΄λ–€ 정보듀을 λ‹΄κ³ μžˆλ‚˜λΌ μ§€μ •ν•˜λŠ” ν”Œλž˜κ·Έμ΄κ³ , CustomVertexκ΅¬μ‘°μ²΄λŠ” μ‹€μ œ μ •λ³΄λΌ λ‹΄λŠ” λ‚˜λ§Œμ˜ ꡬ쑰체이닀.

RHW

RHWλŠ” λ™μΉ˜μ’Œν‘œ W의 μ—­μˆ˜ μž…λ‹ˆλ‹€. 그러면 λ™μΉ˜ μ’Œν‘œλž€ 무엇이냐. 이것은 μ’Œν‘œκ³„μ˜ 또 λ‹€λ₯Έ μ μž…λ‹ˆλ‹€. 이게 있음으둜 μš°λ¦¬λŠ” 4차원 μ’Œν‘œκ³„κ°€ λ©λ‹ˆλ‹€.(??)
μ–΄μ¨Œλ“  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ν˜•μ΄λ‹€.)ν˜•μ„ μ‚¬μš©ν•œλ‹€.
~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;
};
 

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:14
Processing time 0.0179 sec