MoniWiki메모장_수업D3D
Login:
Password:
대문|찾기|바뀐글|목록|메모장|책갈피|연꽃|링크
Edit Diff Reload Search Print Info Mail Help RSS

@ 2004-05-24 @

  �������� 3D �������� (������ �� ����^^)

���������� ������; ������������ ������ �������� ������ ���� ������
���� ������(5��) ������ ������������ ������, ��������X�� �� ������ ���� ���� ������ ��������!!
1 ����(1/5): �������� 3D-20030901/ ������ ������/ ������ ������
2 ����(2/5): �������� 3D-20030902/ ������������/ (����) ����/ ������, ������ ����
3 ����(3/5): �������� 3D-20030903/ Texture����/ ����������/ ������(������������)/ ������...
4 ����(4/5): �������� 3D-20030904/ ����������.../ �������� ������ ������
5 ����(5/5): �������� 3D-20030905/ ����������/ Data����
{_r} ���������� ��������

1 ����(1/5): �������� 3D-20030901/ ������ ������/ ������ ������ #


0901-0.DirectX��
D3D�� �������� ���������� ����, ���� ��������
setting...
D3D9.lib
D3D9dt.lib

#include <d3d9.h>

Direct3D 9.0
D3D extension 3DDEX
app Wizard�� ����
���� �� ���� ����������
�������� ������ ������(������ ����)

���������� <����> --> <������>
<��������> --> <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
{
FLOAT x, y, z, rhw; // The transformed position for the vertex
DWORD color; // The vertex color
};

// Our custom FVF, which describes our custom vertex structure
#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);
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 );
GetViewport(D3DVIEWPORT9 *pViewport ); ������ ���� �������� ���� ������ ���������� ��������.
SetViewport( // );

-1.������������ ���� ; ���������� �������� ���� ���������� 0.0 - 1.0 ������ ���� ��������
������ ����(������ ����)�� ������������, ������ ���� ������ �������� ���� ����.


     #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 ���� ��
g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE ); // Light ��

-3.���� ; ������ clear �������� ����
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
// Begin the scene
g_pd3dDevice->BeginScene();
// Setup the world, view, and projection matrices
SetupMatrices();
...
// 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������ ������ ����
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,
sinf(timeGetTime()/350.0f) );
D3DXVec3Normalize( (D3DXVECTOR3*)&light.Direction, &vecDir );
light.Range = 1000.0f;
g_pd3dDevice->SetLight( 0, &light );
g_pd3dDevice->LightEnable( 0, TRUE );
g_pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );

// Finally, turn on some ambient light.
g_pd3dDevice->SetRenderState( D3DRS_AMBIENT, (DWORD)0x00202020 );
}

0902-3.zbuffer(����)/������(����) ����
<����>
-0.������������ ������������ ���� ������ ���� ������ ����
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
...
d3dpp.EnableAutoDepthStencil = true; // �������� ������ ������
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;

-1.������ �������������� ,zbuffer ������ ����
// Turn on the zbuffer
g_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );

D3DZB_FALSE - ���� ������ ���� �������� ����.
D3DZB_TRUE - z ������ ���� �������� ����.( ������ ������ ������ ����)
D3DZB_USEW - w ������ ���� �������� ����.
D3DZB_FORCE_DWORD - �� �������� ���������� 32 ���� �������� ������ ����.

-2.������(����)����; ������ �������� ���������� �������������� ����
D3D�� ���������� ���������� ��������, ������ ���������� �� ���� ������ ���������� ������������.!

LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL; // Buffer to hold vertices
g_pd3dDevice->CreateVertexBuffer(
4*sizeof(CUSTOMVERTEX), ������ = ���� * ����
0, ����
D3DFVF_CUSTOMVERTEX, ����
D3DPOOL_DEFAULT, ������
&g_pVB, ������ ������
NULL );
  • D3DPOOL ������; �������� ������ ���� �������� ������ �������� ��������.
    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->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
    g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
    g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );
    g_pd3dDevice->EndScene();

    0902-4.������ ����
    ������ ������ ������ ������ ����, ������ �� ���� ������ �������� ��������
    ���������� �������� ���� ����(������) ����

    <����>
    LPDIRECT3DINDEXBUFFER9 g_pIndex = NULL; // Our interface for manipulating index buffers
    ...
    WORD ver_index[] ={ 0, 1, 2};
    -1.������ ���� ����
    g_pd3dDevice->CreateIndexBuffer( sizeof(ver_index), - ������ ������ = ����(1) * ����
    0, D3DFMT_INDEX16,
    D3DPOOL_DEFAULT, &g_pIndex, NULL );
    -2.������ ������ ���� ����
    <!><strong class=' title='&lt;!>' /> 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();

    &lt;������>
    g_pd3dDevice->BeginScene(); // �������� �� ��, ������ ������ ������ ������ ����
    g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
    g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
    // Render the index buffer contents
    g_pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,3,0,1);
    //g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); - ������ ���� ����

    -. ���� ������ �������� �������� ������ ����, ������ ���������� ���������� ������ ����.
  • HRESULT DrawIndexedPrimitive(
    D3DPRIMITIVETYPE Type,
    INT BaseVertexIndex,
    UINT MinIndex,
    UINT NumVertices, - ������ ������
    UINT StartIndex,
    UINT PrimitiveCount ); - ������ ������ ����
    �������� 3���� �������� �������� �������� Tyte�� D3DPT_TRIANGLELIST�� ����.

    �� ���� - �������� ������������ ������ ������ ���� ��,
    ������ ������ ������ ���� Draw����
    Device->SetStreamSource( 0, g_pVB_Obj01, 0, sizeof(CUSTOMVERTEX) );
    Device->SetIndices(g_pIndex_Obj01);
    Device->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,3,0,1);

  • 3 ����(3/5): �������� 3D-20030903/ Texture����/ ����������/ ������(������������)/ ������... #


    0903-1.Texture����
    &lt;����>
    -1. D3DFVF ; FVF ������ ������ ������ ������ ����

    FVF ���� ; ������ ���� ���� (FVF)��, ������ ������ �������� �������� ���� ���� ���� ����
    ������ ������ �������� ������ ��������. FVF ������, ����, ���� ������ ���� ������ ����
    �������� �������� �������� ������ ��������.

    #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX1 )
    LPDIRECT3DTEXTURE9 g_pTexture1 = NULL; // Our texture
    LPDIRECT3DTEXTURE9 g_pTexture2 = NULL;

    -2.����
    D3DXCreateTextureFromFile( g_pd3dDevice, "..\\banana.bmp", &g_pTexture1 );

    -3.���� ���� ����
    g_pTexture1->Release();

    &lt;������>
    g_pd3dDevice->SetTexture( 0, g_pTexture1 );
    �������� 1. ; ��������1�� g_pTexture1 ����

    0903-2.Texture Addressing ; ���� ������ ������ ���� ����
    &nbsp; &nbsp; &nbsp; &nbsp; -. ������ ������ ������ ������ ������ ������������ ����.
    &lt;����>
    HRESULT SetTextureStageState(
    DWORD Stage,
    D3DTEXTURESTAGESTATETYPE Type,
    DWORD Value
    );
  • Stage
    in ������������ �������� �������� �������� ������. �������� �������� 0 �������� ��������.
    ������ ���� 8 �������� �������� ���� ���� ��������,Stage �� ������ �� ���� �������� 7 ����.
  • D3DSAMPLERSTATETYPE ������
    D3DSAMP_ADDRESSU = 1, u ������ �������� ������������������. �������� D3DTADDRESS_WRAP
    D3DSAMP_ADDRESSV = 2, v ������ �������� ������������������. �������� D3DTADDRESS_WRAP
    ...
  • D3DTEXTUREADDRESS ������ - �������� ������ �������������� �������� ������ ����
    typedef enum _D3DTEXTUREADDRESS {
    D3DTADDRESS_WRAP = 1,
    D3DTADDRESS_MIRROR = 2,
    D3DTADDRESS_CLAMP = 3,
    D3DTADDRESS_BORDER = 4,
    D3DTADDRESS_MIRRORONCE = 5,
    D3DTADDRESS_FORCE_DWORD = 0x7fffffff
    } D3DTEXTUREADDRESS;
    &lt;������>
    Device->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR );
    Device->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP );

  • 0903-3.����������
    �� Z-buffer�� ���� ���� ������ ������ ������ �������� ���� ������ �������� ����,
    ������ ���� ������ ������ ������ �������� ������ ������ ������.
    &lt;����>
    Device->SetRenderState( D3DRS_ALPHABLENDENABLE, true );
  • D3DSAMPLERSTATETYPE ������
    D3DRS_SRCBLEND = 19, D3DBLEND �������� ������ ��������. ���������� D3DBLEND_ONE
    D3DRS_DESTBLEND = 20, D3DBLEND �������� ������ ��������. ���������� D3DBLEND_ZERO
    D3DRS_ALPHABLENDENABLE = 27, ���� �������� ���� ������(TRUE�� ����), ���������� FALSE
    ���� ������ ������, D3DRS_SRCBLEND �� D3DRS_DESTBLEND �� ������ ���������� ���� ��������.
    ...
  • D3DBLEND ������ - ���� ���� �������� ������ ����
    typedef enum _D3DBLEND {
    D3DBLEND_ZERO = 1, - ���� ������, (0, 0, 0, 0)
    D3DBLEND_ONE = 2, - ���� ������, (1, 1, 1, 1)
    D3DBLEND_SRCCOLOR = 3, - ���� ������, (Rs, Gs, Bs, As)
    D3DBLEND_INVSRCCOLOR = 4, - ���� ������, (1 - Rs, 1 - Gs, 1 - Bs, 1 - As)
    ...
    } D3DBLEND
    &lt;������>
    Device->SetRenderState( D3DRS_ALPHABLENDENABLE, true ); ����������

  • 0903-4.������; ������, ����, ������(������ ������ ���� ����), ���� ���� ����
    &lt;����>
    Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT );
  • D3DSAMPLERSTATETYPE ������
    D3DSAMP_MAGFILTER = 5, D3DTEXTUREFILTERTYPE ���� ���� ����. ���������� D3DTEXF_POINT
    D3DSAMP_MINFILTER = 6, D3DTEXTUREFILTERTYPE ���� ���� ����. ���������� D3DTEXF_POINT
    D3DSAMP_MIPFILTER = 7, �������� �������� ���� ����. ���������� D3DTEXF_NONE
    ...
  • D3DTEXTUREFILTERTYPE ������
    typedef enum _D3DTEXTUREFILTERTYPE {
    D3DTEXF_NONE = 0, - ���� ������ ������ ����. �������������� ������ ���� ������ ����
    D3DTEXF_POINT = 1, - �������� ���� ���� ���� ���� �������� �������� ��������.
    ������ �������� ���� ������ ������ ������ ������ ��������. ���� �������� �������� ������ ������,
    ���������� ��������. �������������� ���� ������ ���� �������� ������������ ���� ��������
    D3DTEXF_LINEAR = 2, - �������� ���� ���� ���� ���� �������� �������� ���������� ���� ������.
    ������ ������ �������� 2 �� 2 ������ ������ ������ ���� ������ ��������. ���� �������� ��������
    ������ ������, ������ ������ ���� ��������. ��������������, ���� ������ ���� ������ 2 ������������
    ������ ������, �������� ���� ���� ����. (�������� ���������� ����)
    D3DTEXF_ANISOTROPIC = 3, - �������� ���� ���� ���� ���� �������� �������� �������� ������ ������.
    ������ �������� ������ �������� ������ ������ ���� �������� ���������� ��������.
    D3DTEXF_PYRAMIDALQUAD = 6, - �������� ���� ���� ���� ���� �������� �������� 4 ������ ���� ����
    D3DTEXF_GAUSSIANQUAD = 7, - �������� ���� ���� ���� ���� �������� �������� 4 ������ Gauss ����.
    D3DTEXF_FORCE_DWORD = 0x7fffffff
    �� �������� ���������� 32 ���� �������� ������ ����. �� ���� �������� ������.
    } D3DTEXTUREFILTERTYPE;

    -1.������������
  • HRESULT CreateTexture( UINT Width, - in ���������� �������� �� (���� ����).
    UINT Height, - in ���������� �������� ���� (���� ����)
    UINT Levels, - in �������� ���� ������ ��. 0 �� ���� ����, ������ ��������
    �������� ���������� ����, 1 �� 1 ���������� ���� ������ ���� ������ ��������.
    DWORD Usage,
    D3DFORMAT Format, - in D3DFORMAT �������� ����. �������� �������� ������ ����
    D3DPOOL Pool, - D3DPOOL_MANAGED; S/W�� ������ ����, H/W�� ������ ���� ���� ��������
    �������� ��������, ������ �������� ���� ������, ������ �������� ���� ���� ���� �� ������ ����
    IDirect3DTexture9** ppTexture,
    - [out, retval] ���� �� ������ ������ �������� IDirect3DTexture9 ������������ ������
    HANDLE* pHandle ); -in ������ ���� ����. �� ���������� NULL �� ����
  • D3DFORMAT ������ �� ���� ���� ���� - ���� �������� ���� ������ ���� ������ ���������� ��������.
    D3DFMT_R8G8B8 / ��20/ 24 ������ RGB ���� ��������, ���� ���� 8 ������ ����
    D3DFMT_A8R8G8B8 / ��21/ 32 ������ ���� ���� ARGB ���� ��������, ���� ���� 8 ������ ����
    D3DFMT_R5G6B5 / ��23/ 16 ������ RGB ���� ��������, ���� 5 ����, ���� 6 ����, ���� 5 ������ ����
    ...
    &lt;������>
    Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
    Device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR );
    Device->CreateTexture(256, 256, 5, 0, D3DFMT_R8G8B8, D3DPOOL_MANAGED, &g_pTexture1, NULL);

  • 0903-5.������������������
    &lt;����>
    Device->SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME);
  • D3DFILLMODE ������ - ���� ���� ������ �������� ������ ��������.
    typedef enum _D3DFILLMODE {
    D3DFILL_POINT = 1, - ���� ���� ������.
    D3DFILL_WIREFRAME = 2, - ������ �������� ���� ������.
    D3DFILL_SOLID = 3, - ���� ���� ������.
    D3DFILL_FORCE_DWORD = 0x7fffffff
    } D3DFILLMODE;
  • 4 ����(4/5): �������� 3D-20030904/ ����������.../ �������� ������ ������ #


    0904-1.����������
    &lt;����> �������� ������ texture�� ������ �������� ��������,
    ������ ���������� texture�� ������ ���� ��������.
    0.HRESULT SetTexture( DWORD Stage, - in �������� �������� �������� ������
    IDirect3DBaseTexture9 *pTexture ); - in IDirect3DBaseTexture9 ������������ ������ ������

    0.HRESULT SetTextureStageState( DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value );
    - ���� ������ �� ���� �������� ������������ ����

  • D3DTEXTURESTAGESTATETYPE ������ - ������ �������� ���������� ����
    D3DTSS_COLOROP = 1,
    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 (������ ���� ����) - ������ �������� ������ ������ ���������� 2 ���� ������ ������
    ������ ������ ������ �������� ���� ���� ������ ������ ����.
    D3DTA_CURRENT - ������ ������ ���� ���� ���������� ��������.
    ������ ������ �������� (�������� 0)������, �� ������ D3DTA_DIFFUSE �� ����.
    D3DTA_DIFFUSE - gouraud shading �������� ������ ������������ ���� �� ���� ��
    ���� ��������
    D3DTA_TEXTURE - ������ ���������� ������ ��������. ������ ���� ��������.
    D3DTA_SPECULAR - gouraud shading �������� ������ ������������ ���� �� ��������������.

  • D3DTEXTUREOP ������ - ������������ ������ ���� ������ ����
    typedef enum _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,
    ...
    } D3DTEXTUREOP;

  • 
       &lt;����>
          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.��������; ������ ������ ������ �������� ��, ���� �������� ������
    D3DTEXTUREOP �������� D3DTOP_ADDSIGNED�� ���� ( (A+B)-0.5 )
    D3DTOP_ADDSIGNED2X ( (A+B)-0.5 ) << 1

    0904-5.��������; ���������� ������ ������. ������ ���������� �������� ����
    &lt;����>
    // Alphablendging �������� ����
    pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, true );
    pd3dDevice->SetRenderState( D3DRS_SRCBLEND , D3DBLEND_ONE ) ;
    pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_SRCALPHA );

    0904-6.�������� ������ ������
    &lt;����>
    0.HRESULT SetTransform( D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX *pMatrix );
    - ���� ������ ���� ���� ���������� ����
  • D3DTRANSFORMSTATETYPE ������ - ���� ���������� ���� �������� ������ ����
    D3DTS_VIEW = 2, - �� ���� �������� �������� ���� ������ ����, ���������� NULL(��������)
    D3DTS_PROJECTION = 3, - ���� ���� �������� �������� ���� ������ ����, ���������� NULL(��������)
    D3DTS_TEXTURE0 = 16, - ������ ������ ���������� �������� ���� ������ ����
    D3DTS_TEXTURE1 = 17, - ������ ������ ���������� �������� ���� ������ ����
    ...

    0.HRESULT SetTextureStageState( DWORD Stage, D3DTEXTURESTAGESTATETYPE Type, DWORD Value );
  • D3DTEXTURETRANSFORMFLAGS �������� ����.
    D3DTSS_TEXTURETRANSFORMFLAGS = 24,
    �� ������ ���������� ������ ������ ������ ��������. ����������, D3DTTFF_DISABLE

  • D3DTEXTURETRANSFORMFLAGS ������ - ������ �������� ���������� ���� ����
    typedef enum _D3DTEXTURETRANSFORMFLAGS {
    D3DTTFF_DISABLE = 0, - ������ ������ �������������� ���� ����������.
    D3DTTFF_COUNT1 = 1, - ��������������, 1D �� ������ ������ ��������.
    D3DTTFF_COUNT2 = 2, - 2D �� ������ ������ ��������.
    D3DTTFF_COUNT3 = 3, - 3D �� ������ ������ ��������.
    D3DTTFF_COUNT4 = 4, - 4D �� ������ ������ ��������.
    D3DTTFF_PROJECTED = 256, - ������ ������, ���������������� �������� ���� ������ ������ ���� ����
    ���� ����, �� �������� D3DTTFF_COUNT3 �� ���� �������� ���� ����,
    1���� �� 2������ ������ ������, ���������������� �������� ����, 3������ ������ ��������.
    D3DTTFF_FORCE_DWORD = 0x7fffffff - �� �������� ���������� 32 ���� �������� ������
    } D3DTEXTURETRANSFORMFLAGS;

    0.D3DTEXTURESTAGESTATETYPE ������
    D3DTSS_TEXCOORDINDEX = 11, - �� ������ ������������ �������� ���� ������ ������ ������ ������.
    ���� 1 ���� ������ ���� 8 ���������� ������ ������ ������ �� ����.
    ������, ������ �������� ������ ���� ������ �������� ���� ������, u �� v ���� ������(0,0)

    0.D3DTSS_TCI - �������� ������ ������ ���� ������(������ �������� ���� ������ ������ ���������� ����)
    #define/ �� / ����
    D3DTSS_TCI_PASSTHRU / 0x00000000L / ���� �������� ������ ������ ������ ����, ���� ����
    D3DTSS_TCI_CAMERASPACENORMAL / 0x00010000L / ���������� ������ ������ ����
    ���� ������ �������� ������ ������ ���� �� ���� ������ ����
    D3DTSS_TCI_CAMERASPACEPOSITION / 0x00020000L / ������ ������ ���� �� ���� ������ ����
    D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR/ 0x00030000L /
    ������ ������ ���� �� ���� ������ ��������,
    ���� ������, ���� ���� ���� ������ ���� ���������� ��������.
    D3DTSS_TCI_SPHEREMAP / 0x00040000L / ������ ������ ������ ������ ������ ��������.

  • 
       &lt;����>
       -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.����������; ������������ ������ ����(������)
    • D3DPRESENT_PARAMETERS d3dpp;
      d3dpp.EnableAutoDepthStencil = true; // �������� ������ ������
      d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8; // ���� 24, ������ 8bit ����
      ...

    0905-2.Data����
    -1.���� Data�� ������ ������ ����,
    Data�� �������� ������ Index�� flag�� ���� ��������.
    ==> ���������� ���� ������ Index�� ������ ����(���� ������ ������ ����)
    -2.������
    ��������(����Data�� ������ ������)
    -.Vertex List ; ������ ���� -> ������ �������� ������ ����, ������ �������� ������ ����
    -.Index List
    -.VerNum
    -.IndexNum
    -.��������
    -.����ID
    ��������������
    Texture
    Material
    ��������(����, �������� ����)
    ����flag
    ...
    -3.Vertex List ���� �������� ���� ������ ���������� ����

    {_r} ���������� ��������

    November, 2026
    1234567
    891011121314
    15161718192021
    22232425262728
    2930 

    "Say it, don't spray it!"

    메모장_MD2
    메모장_SMD
    MoniWikiOptions
    바람07_2016
    last modified 2004-06-16 16:47:26
    고치기|찾기|쪽 지우기|비슷한 쪽 Valid XHTML 1.0! Valid CSS! powerd by MoniWiki
    0.5734 sec