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

مشكلة صغيره فى كود انشاء مكعب

بدأه EnigmaLine في 23 فبراير 2011 · 3 رد · 2,087 مشاهدة · في DirectX
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا رسمت مكعب مكون من 6 اوجه على الاوبن جى ال المشكله ان الوجه الخلفى للمكعب يظهر فوق الوجه الامامى مع ان الوجه الخلفى العمق بتاعه اقل من العمق للوجه الامامى المشكله ان ال الاشكال المرسومه فى الخلف تظهر على الاشكال المرسومه فى الامام المفروض ان الاشكال المرسومه فى الاماما تغطى على المرسومه فى الخلف

لو انا خليت البرنامج يرسم الوجه الخلفى الاول و بعده الوجه الامامى تظبط معايا بس لما اخلى المكعب يدور بتظهر نفس المشكله

يعنى من الاخر البرنامج بيظهر الاشكال المرسومه فى الاخر فى المقدمه

ده كود مسح الشاشة اللى بستخدمه

 Device3D.RenderState.ZBufferEnable = true;
 Device3D.RenderState.ZBufferWriteEnable = true;

ارجو الافاده و ياريت تكونو فهمتو قصدى

#2

معلش هو انا كتبت ان اان عملت المكعب على الاوبن جى ال علشان نفس المشكله دى كانت معايا على الاوبن جى ال

واتحلت على الاوبن جى ال بس انا دلوقتى قررت انتقل الى الدايركت اكس علشان الاوبن جى ال فى مشاكل كتير مش عارف احلها ودلوقتى انا شغال على الدايركت اكس مع السى شارب

والمشكله دى ظهرت معايا انا حلتها على الاوبن جى ال من خلال تفعيل العمق ودلوقتى مش عارف احلها على الدايركت اكس مش عارف المشكله من ايه

ياريت اللى عارف حل للمشكله دى يقولى اعملها ازاى

#3

السلام عليكم

هذا اجراء لرسم مكعب

Private Sub loadGeometry()
		Try
			vbMenu = New VertexBuffer(GetType(CustomVertex.TransformedTextured), _
						  4, D3DDev, 0, CustomVertex.TransformedTextured.Format, Pool.Default)
			Dim v As CustomVertex.TransformedTextured() = CType(vbMenu.Lock(0, 0), CustomVertex.TransformedTextured())

			vbCube = New VertexBuffer(GetType(CustomVertex.PositionTextured), _
									  36, D3DDev, 0, CustomVertex.PositionTextured.Format, Pool.Managed)
			Dim vCube As CustomVertex.PositionTextured() = CType(vbCube.Lock(0, 0), CustomVertex.PositionTextured())

			' إنشاء وجه المكعب العلويّ 
			vCube(0) = New CustomVertex.PositionTextured(-0.5, 0.5, 0.5, 0, 0)
			vCube(1) = New CustomVertex.PositionTextured(0.5, 0.5, 0.5, 1, 0)
			vCube(2) = New CustomVertex.PositionTextured(-0.5, 0.5, -0.5, 0, 1)
			vCube(3) = New CustomVertex.PositionTextured(0.5, 0.5, -0.5, 1, 1)
			vCube(4) = New CustomVertex.PositionTextured(-0.5, 0.5, -0.5, 0, 1)
			vCube(5) = New CustomVertex.PositionTextured(0.5, 0.5, 0.5, 1, 0)

			'  إنشاء وجه المكعب السفليّ
			vCube(6) = New CustomVertex.PositionTextured(-0.5, -0.5, -0.5, 1, 0)
			vCube(7) = New CustomVertex.PositionTextured(0.5, -0.5, 0.5, 0, 1)
			vCube(8) = New CustomVertex.PositionTextured(-0.5, -0.5, 0.5, 0, 0)
			vCube(9) = New CustomVertex.PositionTextured(0.5, -0.5, 0.5, 0, 1)
			vCube(10) = New CustomVertex.PositionTextured(-0.5, -0.5, -0.5, 1, 0)
			vCube(11) = New CustomVertex.PositionTextured(0.5, -0.5, -0.5, 1, 1)

			' الأيسر إنشاء وجه المكعب
			vCube(12) = New CustomVertex.PositionTextured(-0.5, 0.5, -0.5, 0, 0)
			vCube(13) = New CustomVertex.PositionTextured(-0.5, -0.5, -0.5, 1, 0)
			vCube(14) = New CustomVertex.PositionTextured(-0.5, 0.5, 0.5, 0, 1)
			vCube(15) = New CustomVertex.PositionTextured(-0.5, 0.5, 0.5, 0, 1)
			vCube(16) = New CustomVertex.PositionTextured(-0.5, -0.5, -0.5, 1, 0)
			vCube(17) = New CustomVertex.PositionTextured(-0.5, -0.5, 0.5, 1, 1)

			' الأيمن إنشاء وجه المكعب
			vCube(18) = New CustomVertex.PositionTextured(0.5, 0.5, -0.5, 0, 0)
			vCube(19) = New CustomVertex.PositionTextured(0.5, 0.5, 0.5, 1, 0)
			vCube(20) = New CustomVertex.PositionTextured(0.5, -0.5, -0.5, 0, 1)
			vCube(21) = New CustomVertex.PositionTextured(0.5, -0.5, 0.5, 1, 1)
			vCube(22) = New CustomVertex.PositionTextured(0.5, -0.5, -0.5, 0, 1)
			vCube(23) = New CustomVertex.PositionTextured(0.5, 0.5, 0.5, 1, 0)

			' الخلفيّ إنشاء وجه المكعب
			vCube(24) = New CustomVertex.PositionTextured(-0.5, 0.5, -0.5, 0, 0)
			vCube(25) = New CustomVertex.PositionTextured(0.5, 0.5, -0.5, 1, 0)
			vCube(26) = New CustomVertex.PositionTextured(-0.5, -0.5, -0.5, 0, 1)
			vCube(27) = New CustomVertex.PositionTextured(0.5, -0.5, -0.5, 1, 1)
			vCube(28) = New CustomVertex.PositionTextured(-0.5, -0.5, -0.5, 0, 1)
			vCube(29) = New CustomVertex.PositionTextured(0.5, 0.5, -0.5, 1, 0)

			' الأماميّ إنشاء وجه المكعب
			vCube(30) = New CustomVertex.PositionTextured(0.5, 0.5, 0.5, 1, 0)
			vCube(31) = New CustomVertex.PositionTextured(-0.5, 0.5, 0.5, 0, 0)
			vCube(32) = New CustomVertex.PositionTextured(-0.5, -0.5, 0.5, 0, 1)
			vCube(33) = New CustomVertex.PositionTextured(-0.5, -0.5, 0.5, 0, 1)
			vCube(34) = New CustomVertex.PositionTextured(0.5, -0.5, 0.5, 1, 1)
			vCube(35) = New CustomVertex.PositionTextured(0.5, 0.5, 0.5, 1, 0)

			vbCube.Unlock()


		Catch err As Exception
			MsgBox("loadGeometry(): " + Chr(13) + Chr(13) + err.ToString())
			Throw New Exception("could not complete loadGeometry()")
		End Try
	End Sub

وان لم يفى راجع هذا الموضوع

هنا

163374357.gif

#4

اذا كنت ستجرب directx9 هناك دالة تقوم بانشاء مكعب مباشرة هي (D3DXCreateBox) بالنسبة لـ open gl لم اعمل عليه مطلقا

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