بســم الله الـرحمــن الرحيــم
السلام عليكــم ورحمـة الله وبركاتــه
قمت بانشاء تطبيق بسيط وهو عبارة عن مرآة أمامها نمر وأريد أن أعكس هذا النمر في المرأة
باستخدام ذاكرة التقنيع
المهم دخلت الى موضوع time
" target="_blank">
</a>
واستفدت كثيرا منه
واستعنت بكتاب directx for beginner
ولكن لم أستطع عكس النمر
وها هو الكود
VOID Stop()
{
D3DXMATRIXA16 S;
D3DXMatrixRotationY( &S, timeGetTime()*0.0f );
Device->SetTransform( D3DTS_WORLD, &S );
}
VOID Animation ()
{
D3DXMATRIXA16 matWorld;
D3DXMatrixRotationY( &matWorld, timeGetTime()/3000.0f );
Device->SetTransform( D3DTS_WORLD, &matWorld );
}
VOID RendreMirror()
{
Device->SetRenderState ( D3DRS_STENCILENABLE , true);
Device->SetRenderState ( D3DRS_STENCILREF , 0x1 );
Device->SetRenderState ( D3DRS_STENCILMASK ,0xffffffff);
Device->SetRenderState ( D3DRS_STENCILWRITEMASK , 0xffffffff);
Device->SetRenderState ( D3DRS_STENCILFUNC , D3DCMP_ALWAYS);
Device->SetRenderState ( D3DRS_STENCILZFAIL , D3DSTENCILOP_KEEP);
Device->SetRenderState ( D3DRS_STENCILFAIL , D3DSTENCILOP_KEEP);
Device->SetRenderState ( D3DRS_STENCILPASS , D3DSTENCILOP_REPLACE);
Device->SetRenderState ( D3DRS_ZWRITEENABLE , false);
Device->SetRenderState ( D3DRS_ALPHABLENDENABLE , true);
Device->SetRenderState ( D3DRS_DESTBLEND , D3DBLEND_ONE);
Device->SetRenderState ( D3DRS_SRCBLEND , D3DBLEND_ZERO);
Stop();
Device->SetTexture ( 0 , BTexture);
Device->SetFVF ( D3DFVF_XYZ|D3DFVF_TEX1);
Device->SetStreamSource ( 0 , Buffer , 0 , sizeof(Vertex));
Device->DrawPrimitive ( D3DPT_TRIANGLESTRIP , 0 , 2);
Device->SetRenderState ( D3DRS_ZWRITEENABLE , true);
Device->SetRenderState ( D3DRS_STENCILFUNC , D3DCMP_EQUAL);
Device->SetRenderState ( D3DRS_STENCILPASS , D3DSTENCILOP_KEEP);
D3DXMATRIXA16 W ,T, R ;
D3DXPLANE Plane ( 0,0,1,0);
D3DXMatrixReflect ( &R , &Plane);
D3DXMatrixTranslation ( &T , 5.0f , 50.0f , 0.0f );
W = T * R ;
Device->SetTransform ( D3DTS_WORLD ,&W);
Device->Clear (0 , NULL , D3DCLEAR_ZBUFFER , D3DCOLOR_XRGB(12,15,100) , 1.0f , 0);
Device->SetRenderState ( D3DRS_DESTBLEND , D3DBLEND_ZERO);
Device->SetRenderState ( D3DRS_SRCBLEND , D3DBLEND_DESTCOLOR);
Animation();
Device->SetTexture ( 0 , Texture);
Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
Mesh->DrawSubset (0);
Device->SetRenderState ( D3DRS_CULLMODE , D3DCULL_CW);
Device->SetRenderState ( D3DRS_STENCILENABLE , false);
Device->SetRenderState ( D3DRS_CULLMODE , D3DCULL_CCW);
Device->SetRenderState ( D3DRS_ALPHABLENDENABLE , false);
}
VOID Camera1()
{
D3DXVECTOR3 vEyePt( -2.0f, 0.0f,-7.0f );
D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 0.0f );
D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
D3DXMATRIXA16 matView;
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
Device->SetTransform( D3DTS_VIEW, &matView );
D3DXMATRIXA16 matProj;
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
Device->SetTransform( D3DTS_PROJECTION, &matProj );
}
VOID Render ()
{
Device->Clear( 0 , NULL , D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER|D3DCLEAR_STENCIL, D3DCOLOR_XRGB(0,0,120) ,1.0f, 0);
if ( SUCCEEDED( Device->BeginScene()))
{
Camera1();
Animation();
Device->SetTexture ( 0 , Texture);
Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR );
Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR );
Mesh->DrawSubset (0);
Stop();
Device->SetTexture ( 0 , BTexture);
Device->SetFVF ( D3DFVF_XYZ|D3DFVF_TEX1);
Device->SetStreamSource ( 0 , Buffer , 0 , sizeof(Vertex));
Device->DrawPrimitive ( D3DPT_TRIANGLESTRIP , 0 , 2);
RendreMirror();
Device->EndScene();
}
Device->Present ( NULL , NULL , NULL , NULL);
}فياليت مساعدة ولو بسيطة
