الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ممكن مساعدة في ذاكرة التقنيع

بدأه 852147 في 12 ديسمبر 2008 · 5 رد · 1,478 مشاهدة · في DirectX
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه

قمت بانشاء تطبيق بسيط وهو عبارة عن مرآة أمامها نمر وأريد أن أعكس هذا النمر في المرأة

باستخدام ذاكرة التقنيع

المهم دخلت الى موضوع time

/index.php?showtopic=157655

" target="_blank">

/index.php?showtopic=157655

</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);
}

فياليت مساعدة ولو بسيطة

تم تعديل هذه المشاركة بواسطة 852147 في 12 ديسمبر 2008 في 16:37

#2

تأكد من انك استخدمت مع المنهج Clear:

D3DCLEAR_STENCIL

ايضا تأكد من الـ Plane , بأنه موضوع بالشكل الصحيح , عندما تكون المرآة على المستوى x,y نعكس z ونعطيها قيمة 1 او 1- , وهكذا كل مستوى .

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#3

كل شيئ عادي

ولكن لم يظهر النمر المنعكس

#4

يااخواني أرجو المساعدة

ضروري جدا أتعلم ذاكرة التقنيع قبل نهاية العطلة

لقد ارفقت الكود أرجو قراءة الكود والتصحيح

واجركم على الله

أوعلى الأقل أرفقو لي مشروع صغير حول stencil

#5

http://www.d3dcoder.net/Data/Book2/PartII.zip

سورس كود كتاب فرنك و به مثال للstencil

اعتقد ان الخطأ عندك في الInitialization للكارت

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#6

شكرا

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…