|
@ 2004-05-24 @
���������� ������; ������������ ������ �������� ������ ���� ������
���� ������(5��) ������ ������������ ������, ��������X�� �� ������ ���� ���� ������ ��������!!
1 ����(1/5): �������� 3D-20030901/ ������ ������/ ������ ������ #0901-0.DirectX��
D3D�� �������� ���������� ����, ���� ��������
Direct3D 9.0 ���������� <����> --> <������>
<��������> --> <DATA ����/ ����>
0901-1.������ ������
1.�������� ������.
2.���������� ������. 3.DirectCreat9 ������ ����, Com ������ ������ ����. 4.3D->CreateDevice �� ����, Com �������� ������ ���� ������������ ������ ����.
<����>
LPDIRECT3D9 g_pD3D = NULL; // Used to create the D3DDevice
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL; // Our rendering device
g_pD3D = Direct3DCreate9( D3D_SDK_VERSION );
g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice );
5.Device���� Clear�� ��������.
<������>
// Clear the backbuffer to a blue color
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
������ scene
// Present the backbuffer contents to the display
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
6.�������� ���� ���� ������ �������� ���� ����
<����> Device�� ���������� ����
g_pd3dDevice->Release();
g_pD3D->Release();
0901-2.������ ������
<����>
// A structure for our custom vertex type
struct D3DLVERTEX
// Our custom FVF, which describes our custom vertex structure{
FLOAT x, y, z, rhw; // The transformed position for the vertex
};DWORD color; // The vertex color
#define D3DFVF_D3DLVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
D3DLVERTEX vertices[] = {
{ 150.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
};{ 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, }, { 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, }, <������> g_pd3dDevice->BeginScene(); {
g_pd3dDevice->SetFVF( D3DFVF_D3DLVERTEX );
}g_pd3dDevice->DrawPrimitiveUP( D3DPT_TRIANGLELIST, 1, vertices, sizeof(D3DLVERTEX) ); g_pd3dDevice->EndScene(); 2 ����(2/5): �������� 3D-20030902/ ������������/ (����) ����/ ������, ������ ���� #0902-1.������������ ����
Model --(WorldTM)--> World --(ViewTM)--> View --(ProjectTM)--> Viewport
������ �������� ���� �������� ������������ ���� ������ ���� ������ ���� ���������� ��������. ���������� 3D�� �������� ���� ���������� ������, ������ API�� �� ����������.
1) Device->SetTransform(D3DTS_WORLD, &mat);
-1.������������ ���� ; ���������� �������� ���� ���������� 0.0 - 1.0 ������ ���� �������� 2) Device->SetTransform(D3DTS_VIEW, &mat); 3) D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f ); ������������ ����
Device->SetTransform(D3DTS_PROJECTION, &mat);
4) GetviewDevice->SetFVF( D3DFVF_D3DLVERTEX );
������ ����(������ ����)�� ������������, ������ ���� ������ �������� ���� ����.
#define D3DFVF_D3DLVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE);
//#define D3DFVF_D3DLVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE); - ������ ���� ������ �� ����
RHW ���� ���� ���� ������ ���� ������ �������� ������, RHW���� ��������. --> ������ ������ ����
D3DXMATRIXA16 matWorld; // world ���� ���� ��������
D3DXMatrixRotationY( &matWorld, fAngle ); // �������� ����(����, ����)
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
// ----------> world ������ ����
D3DXVECTOR3 vEyePt( 0.0f, 3.0f,-5.0f );
D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
D3DXMATRIXA16 matView; // view ���� ���� ��������
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
g_pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
// ----------> view ������ ����
D3DXMATRIXA16 matProj; // ���� ���� ���� ��������
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
-2.������ �������� ���� ���� ; ���� ������������ ���� ������ �������� ������ �������� ���� ����
// Device state would normally be set here
g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE ); // Culling ���� ��
-3.���� ; ������ clear �������� ����g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE ); // Light ��
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
// Begin the scene// End the scene
g_pd3dDevice->EndScene();
0902-2.����; ������ ������ ���������� �������� ������.
void SetupMaterial()
{
D3DMATERIAL9 mtrl;
}ZeroMemory( &mtrl, sizeof(D3DMATERIAL9) ); mtrl.Diffuse.r = mtrl.Ambient.r = 1.0f; mtrl.Diffuse.g = mtrl.Ambient.g = 0.0f; mtrl.Diffuse.b = mtrl.Ambient.b = 0.0f; mtrl.Diffuse.a = mtrl.Ambient.a = 1.0f; g_pd3dDevice->SetMaterial( &mtrl ); 0902-3.����; ������ ���������� ���� �������� ������ ������������ ����
void SetupLight()
{
D3DXVECTOR3 vecDir; // ������ type�� D3DLIGHT_DIRECTIONAL������ ������ ����
// Finally, turn on some ambient light.D3DLIGHT9 light; ZeroMemory( &light, sizeof(D3DLIGHT9) ); light.Type = D3DLIGHT_DIRECTIONAL; // D3DLIGHT_POINT = 1 light.Diffuse.r = 1.0f; // D3DLIGHT_SPOT = 2, light.Diffuse.g = 1.0f; // D3DLIGHT_DIRECTIONAL = 3, light.Diffuse.b = 1.0f; vecDir = D3DXVECTOR3(cosf(timeGetTime()/350.0f),
1.0f,
D3DXVec3Normalize( (D3DXVECTOR3*)&light.Direction, &vecDir );sinf(timeGetTime()/350.0f) ); light.Range = 1000.0f; g_pd3dDevice->SetLight( 0, &light ); g_pd3dDevice->LightEnable( 0, TRUE ); g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
g_pd3dDevice->SetRenderState( D3DRS_AMBIENT, (DWORD)0x00202020 );
}0902-3.zbuffer(����)/������(����) ����
<����>
-0.������������ ������������ ���� ������ ���� ������ ����
D3DPRESENT_PARAMETERS d3dpp;
-1.������ �������������� ,zbuffer ������ ����ZeroMemory( &d3dpp, sizeof(d3dpp) );
...
d3dpp.EnableAutoDepthStencil = true; // �������� ������ ������d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
// Turn on the zbuffer
-2.������(����)����; ������ �������� ���������� �������������� ���� g_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
D3DZB_FALSE - ���� ������ ���� �������� ����.
D3DZB_TRUE - z ������ ���� �������� ����.( ������ ������ ������ ����) D3DZB_USEW - w ������ ���� �������� ����. D3DZB_FORCE_DWORD - �� �������� ���������� 32 ���� �������� ������ ����.
D3D�� ���������� ���������� ��������, ������ ���������� �� ���� ������ ���������� ������������.!
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL; // Buffer to hold vertices g_pd3dDevice->CreateVertexBuffer(
4*sizeof(CUSTOMVERTEX), ������ = ���� * ����
0, ���� D3DFVF_CUSTOMVERTEX, ���� D3DPOOL_DEFAULT, ������ &g_pVB, ������ ������ NULL );
D3DPOOL_DEFAULT - ����, ���� ������ �������� AGP (Accelerated Graphics Port)
�������� ���� ������ ������, ������ ����������
D3DPOOL_MANAGED - ������ ������, ���������� ������ �� �� ���� �������� ���������� ���� ����.
�������� ��������, ������ �������� ���� ������, ������ �������� ���� ���� ���� �� ������ ����
D3DPOOL_SYSTEMMEM - ����, 3D ������ ���� ������ �� �� ���� ������.
������ RAM �� ����������, ������ ������ RAM �� ������ ���� ����.
������ ��������, ������ �������� ���� ���� �� ������ ����. (�������� �������� �������� �������� ����.)
-.���� ����
vertices[0].position = D3DXVECTOR3(-1.0f,-1.0f, 0.0f);
vertices[0].normal = D3DXVECTOR3( -1.0f, 0.0f, 0.0f);
vertices[0].color = 0xffff0000;
vertices[1].position = D3DXVECTOR3( 1.0f, -1.0f, 0.0f);
vertices[1].normal = D3DXVECTOR3( -1.0f, 0.0f, 0.0f);
vertices[1].color = 0xff0000ff;
vertices[2].position = D3DXVECTOR3( 0.0f, 1.0f, 0.0f);
vertices[2].normal = D3DXVECTOR3( -1.0f, 0.0f, 0.0f);
vertices[2].color = 0xffffffff;
CUSTOMVERTEX* pVertices;
g_pVB->Lock( 0, 0, (void**)&pVertices, 0 );
DAta rkqt
memcpy( pVertices, vertices, sizeof(vertices) ); ������ ������ ������ ������ ����
g_pVB->Unlock();
<������>
g_pd3dDevice->BeginScene(); // ������ ������ ������ ������ ������ ����
// Render the vertex buffer contents
g_pd3dDevice->EndScene(); 0902-4.������ ����
������ ������ ������ ������ ����, ������ �� ���� ������ �������� ��������
���������� �������� ���� ����(������) ���� <����>
LPDIRECT3DINDEXBUFFER9 g_pIndex = NULL; // Our interface for manipulating index buffers
-1.������ ���� ����
...
WORD ver_index[] ={ 0, 1, 2};
g_pd3dDevice->CreateIndexBuffer( sizeof(ver_index), - ������ ������ = ����(1) * ����
-2.������ ������ ���� ���� ' title='<!>' /> g_pd3dDevice->SetIndices(g_pIndex); - ���������� ����
void * indices;
g_pIndex->Lock(0,0, (void**)&indices,0);
memcpy( indices, ver_index, sizeof(ver_index) );
g_pIndex->Unlock();
g_pd3dDevice->BeginScene(); // �������� �� ��, ������ ������ ������ ������ ����
// Render the index buffer contentsg_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) ); g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,3,0,1);
//g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); - ������ ���� ����-. ���� ������ �������� �������� ������ ����, ������ ���������� ���������� ������ ����.
D3DPRIMITIVETYPE Type,
�������� 3���� �������� �������� �������� Tyte�� D3DPT_TRIANGLELIST�� ����.INT BaseVertexIndex, UINT MinIndex, UINT NumVertices, - ������ ������ UINT StartIndex, UINT PrimitiveCount ); - ������ ������ ���� �� ���� - �������� ������������ ������ ������ ���� ��, 3 ����(3/5): �������� 3D-20030903/ Texture����/ ����������/ ������(������������)/ ������... #0903-1.Texture����
<����>
-1. D3DFVF ; FVF ������ ������ ������ ������ ����
FVF ���� ; ������ ���� ���� (FVF)��, ������ ������ �������� �������� ���� ���� ���� ����
-2.����
������ ������ �������� ������ ��������. FVF ������, ����, ���� ������ ���� ������ ����
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX1 )�������� �������� �������� ������ ��������. LPDIRECT3DTEXTURE9 g_pTexture1 = NULL; // Our texture LPDIRECT3DTEXTURE9 g_pTexture2 = NULL; -3.���� ���� ����
g_pTexture1->Release();
<������>0903-2.Texture Addressing ; ���� ������ ������ ���� ���� -. ������ ������ ������ ������ ������ ������������ ����.
<����>
in ������������ �������� �������� �������� ������. �������� �������� 0 �������� ��������.
������ ���� 8 �������� �������� ���� ���� ��������,Stage �� ������ �� ���� �������� 7 ����.
D3DSAMP_ADDRESSU = 1, u ������ �������� ������������������. �������� D3DTADDRESS_WRAP
D3DSAMP_ADDRESSV = 2, v ������ �������� ������������������. �������� D3DTADDRESS_WRAP ...
typedef enum _D3DTEXTUREADDRESS {
<������>
D3DTADDRESS_WRAP = 1,
} D3DTEXTUREADDRESS;D3DTADDRESS_MIRROR = 2, D3DTADDRESS_CLAMP = 3, D3DTADDRESS_BORDER = 4, D3DTADDRESS_MIRRORONCE = 5, D3DTADDRESS_FORCE_DWORD = 0x7fffffff Device->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR ); Device->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP ); 0903-3.����������
�� Z-buffer�� ���� ���� ������ ������ ������ �������� ���� ������ �������� ����,
������ ���� ������ ������ ������ �������� ������ ������ ������.
<����>Device->SetRenderState( D3DRS_ALPHABLENDENABLE, true );
D3DRS_SRCBLEND = 19, D3DBLEND �������� ������ ��������. ���������� D3DBLEND_ONE
D3DRS_DESTBLEND = 20, D3DBLEND �������� ������ ��������. ���������� D3DBLEND_ZERO D3DRS_ALPHABLENDENABLE = 27, ���� �������� ���� ������(TRUE�� ����), ���������� FALSE ���� ������ ������, D3DRS_SRCBLEND �� D3DRS_DESTBLEND �� ������ ���������� ���� ��������. ...
typedef enum _D3DBLEND {
<������>
D3DBLEND_ZERO = 1, - ���� ������, (0, 0, 0, 0)
} D3DBLENDD3DBLEND_ONE = 2, - ���� ������, (1, 1, 1, 1) D3DBLEND_SRCCOLOR = 3, - ���� ������, (Rs, Gs, Bs, As) D3DBLEND_INVSRCCOLOR = 4, - ���� ������, (1 - Rs, 1 - Gs, 1 - Bs, 1 - As) ...
Device->SetRenderState( D3DRS_ALPHABLENDENABLE, true ); ����������
0903-4.������; ������, ����, ������(������ ������ ���� ����), ���� ���� ����
<����>
Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT );
typedef enum _D3DTEXTUREFILTERTYPE {
} D3DTEXTUREFILTERTYPE;
D3DTEXF_NONE = 0, - ���� ������ ������ ����. �������������� ������ ���� ������ ����
D3DTEXF_POINT = 1, - �������� ���� ���� ���� ���� �������� �������� ��������.
������ �������� ���� ������ ������ ������ ������ ��������. ���� �������� �������� ������ ������,
D3DTEXF_LINEAR = 2, - �������� ���� ���� ���� ���� �������� �������� ���������� ���� ������. ���������� ��������. �������������� ���� ������ ���� �������� ������������ ���� ��������
������ ������ �������� 2 �� 2 ������ ������ ������ ���� ������ ��������. ���� �������� ��������
D3DTEXF_ANISOTROPIC = 3, - �������� ���� ���� ���� ���� �������� �������� �������� ������ ������. ������ ������, ������ ������ ���� ��������. ��������������, ���� ������ ���� ������ 2 ������������ ������ ������, �������� ���� ���� ����. (�������� ���������� ����)
������ �������� ������ �������� ������ ������ ���� �������� ���������� ��������.
D3DTEXF_PYRAMIDALQUAD = 6, - �������� ���� ���� ���� ���� �������� �������� 4 ������ ���� ����D3DTEXF_GAUSSIANQUAD = 7, - �������� ���� ���� ���� ���� �������� �������� 4 ������ Gauss ����. D3DTEXF_FORCE_DWORD = 0x7fffffff
�� �������� ���������� 32 ���� �������� ������ ����. �� ���� �������� ������.
-1.������������
UINT Height, - in ���������� �������� ���� (���� ����)
�������� ��������, ������ �������� ���� ������, ������ �������� ���� ���� ���� �� ������ ����UINT Levels, - in �������� ���� ������ ��. 0 �� ���� ����, ������ ��������
�������� ���������� ����, 1 �� 1 ���������� ���� ������ ���� ������ ��������.
DWORD Usage,D3DFORMAT Format, - in D3DFORMAT �������� ����. �������� �������� ������ ���� D3DPOOL Pool, - D3DPOOL_MANAGED; S/W�� ������ ����, H/W�� ������ ���� ���� ��������
D3DFMT_R8G8B8 / ��20/ 24 ������ RGB ���� ��������, ���� ���� 8 ������ ����
<������>D3DFMT_A8R8G8B8 / ��21/ 32 ������ ���� ���� ARGB ���� ��������, ���� ���� 8 ������ ���� D3DFMT_R5G6B5 / ��23/ 16 ������ RGB ���� ��������, ���� 5 ����, ���� 6 ����, ���� 5 ������ ���� ... 0903-5.������������������
<����>
Device->SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME); 4 ����(4/5): �������� 3D-20030904/ ����������.../ �������� ������ ������ #0904-1.����������
<����> �������� ������ texture�� ������ �������� ��������,
������ ���������� texture�� ������ ���� ��������.
0.HRESULT SetTexture( DWORD Stage, - in �������� �������� �������� ������0.HRESULT SetTextureStageState( DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value );
- ���� ������ �� ���� �������� ������������ ����
D3DTSS_COLOROP = 1,
D3DTA (������ ���� ����) - ������ �������� ������ ������ ���������� 2 ���� ������ ������ D3DTSS_COLORARG1 = 2, D3DTSS_COLORARG2 = 3, D3DTSS_ALPHAOP = 4, D3DTSS_ALPHAARG1 = 5, D3DTSS_ALPHAARG2 = 6, D3DTSS_BUMPENVMAT00 = 7, D3DTSS_BUMPENVMAT01 = 8, D3DTSS_BUMPENVMAT10 = 9, D3DTSS_BUMPENVMAT11 = 10, D3DTSS_TEXCOORDINDEX = 11, ...
������ ������ ������ �������� ���� ���� ������ ������ ����.
D3DTA_CURRENT - ������ ������ ���� ���� ���������� ��������.
������ ������ �������� (�������� 0)������, �� ������ D3DTA_DIFFUSE �� ����.
D3DTA_DIFFUSE - gouraud shading �������� ������ ������������ ���� �� ���� ��
���� ��������
D3DTA_TEXTURE - ������ ���������� ������ ��������. ������ ���� ��������.
D3DTA_SPECULAR - gouraud shading �������� ������ ������������ ���� �� ��������������.
typedef enum _D3DTEXTUREOP {
} D3DTEXTUREOP;
D3DTOP_DISABLE = 1,
D3DTOP_SELECTARG1 = 2, - ���������� ������ ��, ���� ���� ������ �������� ���� ���������� ���� D3DTOP_SELECTARG2 = 3, - ���������� 2���� ��, ���� ���� ������ �������� ���� ���������� ���� D3DTOP_MODULATE = 4, - ������ ������ ��������. D3DTOP_MODULATE2X = 5, D3DTOP_MODULATE4X = 6, D3DTOP_ADD = 7, - ������ ������ ���� ����. D3DTOP_ADDSIGNED = 8, D3DTOP_ADDSIGNED2X = 9, D3DTOP_SUBTRACT = 10, D3DTOP_ADDSMOOTH = 11, ...
<����>
Device->SetRenderState( D3DRS_COLORVERTEX, false );
Device->SetTexture(0, g_pTexture1);
Device->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);
Device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
Device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
Device->SetTexture(1, g_pTexture3);
Device->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 0);
Device->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_TEXTURE);
Device->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CURRENT);
Device->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE);
���� - ��������, vertex�� ���������� ���� �������� false�� ��������.
(����, false�� ������ ���� �������� ������ ������.)
Device->SetRenderState( D3DRS_COLORVERTEX, TRUE );
0904-2.��������; ���������� ������������ ����(�������� ����)����������
Device->SetTextureStageState(1, D3DTSS_COLOROP, MODULATE2X); - ( A*B ) <<1 (밝아짐)
Device->SetTextureStageState(1, D3DTSS_COLOROP, MODULATE4X); - ( A*B ) <<2 (더욱 밝아짐) 0904-3.������ ������ ����
Device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
Device->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); - ��������2�� �������� ���� Device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTEXTUREOP ������); 0904-4.��������; ������ ������ ������ �������� ��, ���� �������� ������ 0904-5.��������; ���������� ������ ������. ������ ���������� �������� ����
<����>
// Alphablendging �������� ���� 0904-6.�������� ������ ������
<����>
0.HRESULT SetTransform( D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX *pMatrix );
- ���� ������ ���� ���� ���������� ����
D3DTS_VIEW = 2, - �� ���� �������� �������� ���� ������ ����, ���������� NULL(��������)
0.HRESULT SetTextureStageState( DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value );D3DTS_PROJECTION = 3, - ���� ���� �������� �������� ���� ������ ����, ���������� NULL(��������) D3DTS_TEXTURE0 = 16, - ������ ������ ���������� �������� ���� ������ ���� D3DTS_TEXTURE1 = 17, - ������ ������ ���������� �������� ���� ������ ���� ...
D3DTSS_TEXTURETRANSFORMFLAGS = 24,
�� ������ ���������� ������ ������ ������ ��������. ����������, D3DTTFF_DISABLE
typedef enum _D3DTEXTURETRANSFORMFLAGS {
D3DTTFF_DISABLE = 0, - ������ ������ �������������� ���� ����������.
} D3DTEXTURETRANSFORMFLAGS;D3DTTFF_COUNT1 = 1, - ��������������, 1D �� ������ ������ ��������. D3DTTFF_COUNT2 = 2, - 2D �� ������ ������ ��������. D3DTTFF_COUNT3 = 3, - 3D �� ������ ������ ��������. D3DTTFF_COUNT4 = 4, - 4D �� ������ ������ ��������. D3DTTFF_PROJECTED = 256, - ������ ������, ���������������� �������� ���� ������ ������ ���� ����
���� ����, �� �������� D3DTTFF_COUNT3 �� ���� �������� ���� ����,
D3DTTFF_FORCE_DWORD = 0x7fffffff - �� �������� ���������� 32 ���� �������� ������1���� �� 2������ ������ ������, ���������������� �������� ����, 3������ ������ ��������. 0.D3DTEXTURESTAGESTATETYPE ������
D3DTSS_TEXCOORDINDEX = 11, - �� ������ ������������ �������� ���� ������ ������ ������ ������.
0.D3DTSS_TCI - �������� ������ ������ ���� ������(������ �������� ���� ������ ������ ���������� ����)
���� 1 ���� ������ ���� 8 ���������� ������ ������ ������ �� ����.
������, ������ �������� ������ ���� ������ �������� ���� ������, u �� v ���� ������(0,0)
#define/ �� / ����
D3DTSS_TCI_PASSTHRU / 0x00000000L / ���� �������� ������ ������ ������ ����, ���� ���� D3DTSS_TCI_CAMERASPACENORMAL / 0x00010000L / ���������� ������ ������ ����
���� ������ �������� ������ ������ ���� �� ���� ������ ����
D3DTSS_TCI_CAMERASPACEPOSITION / 0x00020000L / ������ ������ ���� �� ���� ������ ���� D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR/ 0x00030000L /
������ ������ ���� �� ���� ������ ��������,
D3DTSS_TCI_SPHEREMAP / 0x00040000L / ������ ������ ������ ������ ������ ��������. ���� ������, ���� ���� ���� ������ ���� ���������� ��������.
<����>
-1.������ ����
D3DXMATRIXA16 mat; - �������� ����
D3DXMatrixIdentity( &mat); - ������(�������� ������ ���� ������ �� ����.)
D3DXMatrixRotationY( &mat, 5.0f); - ����(SRT); ������ ���� ������ ���������� ��������.
Device->SetTransform( D3DTS_TEXTURE0, &mat); - ������ D3DTS_TEXTURE0�� ����
Device->SetTextureStageState( 0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2 );
- D3DTS_TEXTURE0�� ���� ������ uv ���� ������ ����
-2.����������
Device->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);
5 ����(5/5): �������� 3D-20030905/ ����������/ Data���� #0905-1.����������; ������������ ������ ����(������)
0905-2.Data����
-1.���� Data�� ������ ������ ����,
Data�� �������� ������ Index�� flag�� ���� ��������.
-2.������==> ���������� ���� ������ Index�� ������ ����(���� ������ ������ ����)
��������(����Data�� ������ ������)
-3.Vertex List ���� �������� ���� ������ ���������� ����
-.Vertex List ; ������ ���� -> ������ �������� ������ ����, ������ �������� ������ ����
��������������-.Index List -.VerNum -.IndexNum -.�������� -.����ID Texture Material ��������(����, �������� ����) ����flag ... |
"Say it, don't spray it!" 메모장_MD2 메모장_SMD MoniWikiOptions 바람07_2016 |