MoniWiki޸_D3D
Login:
Password:
|ã|ٲ||޸|å||ũ
Edit Diff Reload Search Print Info Mail Help RSS

FrontPage占쏙옙占쏙옙_ExtremeProgrammingExplained/2026-01 › ޸_D3D
@ 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.ε ۿ
    <!> 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(); // , ε ۸ ̿
    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
    <>
    -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();

    <>
    g_pd3dDevice->SetTexture( 0, g_pTexture1 );
    Ʈ 1. ; Ʈ1 g_pTexture1

    0903-2.Texture Addressing ; ġ Ŀ
            -. ü ġ ̽ .
    <>
    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;
    <뿹>
    Device->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR );
    Device->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP );

  • 0903-3.ĺ귻
    Z-buffer ʱ ϴ ؾ ϸ,
    ϰ ɸ Ʈ տ ְ ش.
    <>
    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
    <뿹>
    Device->SetRenderState( D3DRS_ALPHABLENDENABLE, true ); ĺ귣

  • 0903-4.͸; , , ̹漺(̿ ), Ӹ ̿
    <>
    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 Ʈ
    ...
    <뿹>
    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.̾ӷ
    <>
    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.Ƽؽ
    <> ϴ ġ 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;

  •    <>
          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.Ŀ; ģ. ȮҼ ϰ
    <>
    // Alphablendging Ȱȭ ʿ
    pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, true );
    pd3dDevice->SetRenderState( D3DRS_SRCBLEND , D3DBLEND_ONE ) ;
    pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_SRCALPHA );

    0904-6.Ʈ ȯ ȯ
    <>
    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, - ؽó ǥ Ͷ dz׹޴´.
    D3DTTFF_COUNT1 = 1, - Ͷ, 1D ؽó ǥ Ѵ.
    D3DTTFF_COUNT2 = 2, - 2D ؽó ǥ Ѵ.
    D3DTTFF_COUNT3 = 3, - 3D ؽó ǥ Ѵ.
    D3DTTFF_COUNT4 = 4, - 4D ؽó ǥ Ѵ.
    D3DTTFF_PROJECTED = 256, - ؽó ǥ, Ͷ dz ҷ
    , ÷װ D3DTTFF_COUNT3 Բ ǰ ִ ,
    1° 2° ؽó ǥ, Ͷ dz , 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 / ؽó ǥ ο Ѵ.

  •    <>
       -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.ij
    ޽(ʱData Ž 籸)
    -.Vertex List ; -> ü ǥ 븻, ÷ ҷ
    -.Index List
    -.VerNum
    -.IndexNum
    -.޽̸
    -.޽ID
    ִϸ̼Ǹ
    Texture
    Material
    ൿ(ġ, ΰ )
    flag
    ...
    -3.Vertex List ͷ Ҵ ʿ

    {_r} ޸ ư

    March, 2026
    1234567
    891011121314
    15161718192021
    22232425262728
    293031 

    д ð ()

    å_MyCheese
    å_Hackish_Games&Demos
    ٶ04
    ޸_DXTn
    last modified 2004-06-16 16:47:26
    ġ|ã| | Valid XHTML 1.0! Valid CSS! powerd by MoniWiki
    0.2656 sec