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

مشكله في كود رسم مثلث

مغلق
بدأه hunterxhunter في 8 يونيو 2006 · 2 رد · 1,057 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انا عندي كود لرسم مثلث والمشكله هي اني لما اشغل البرنامج ما يرسم المثلث فأرجوا المساعدة

طبعا الكود مكتوب بالديركت والفيجوال بيسك دوت نت

وشكرا

وههذا هو الكود

Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Namespace VerticesTutorial

	Public Class Vertices
		Inherits Form
		Private device As device = Nothing
		Private vertexBuffer As vertexBuffer = Nothing

		Public Sub New()
			Me.ClientSize = New System.Drawing.Size(300, 300)
			Me.Text = "Direct3D Tutorial 2 - Vertices"
		End Sub

		Public Function InitializeGraphics() As Boolean
			Try
				Dim presentParams As PresentParameters = New PresentParameters()
				presentParams.Windowed = True
				presentParams.SwapEffect = SwapEffect.Discard
				device = New Device(0, DeviceType.Hardware, Me, CreateFlags.SoftwareVertexProcessing, presentParams)
				Me.OnCreateDevice(device, Nothing)
				Return True
			Catch generatedExceptionVariable0 As DirectXException
				Return False
			End Try
		End Function

		Public Sub OnCreateDevice(ByVal sender As Object, ByVal e As EventArgs)
			Dim dev As Device = CType(sender, Device)
			vertexBuffer = New VertexBuffer(GetType(CustomVertex.TransformedColored), 3, dev, 0, CustomVertex.TransformedColored.Format, Pool.Default)
			AddHandler vertexBuffer.Created, AddressOf Me.OnCreateVertexBuffer
			Me.OnCreateVertexBuffer(vertexBuffer, Nothing)
		End Sub

		Public Sub OnCreateVertexBuffer(ByVal sender As Object, ByVal e As EventArgs)
			Dim vb As VertexBuffer = CType(sender, VertexBuffer)
			Dim stm As GraphicsStream = vb.Lock(0, 0, 0)
			Dim verts(3) As CustomVertex.TransformedColored
			verts(0).X = 150
			verts(0).Y = 50
			verts(0).Z = 0.5F
			verts(0).Rhw = 1
			verts(0).Color = System.Drawing.Color.Aqua.ToArgb
			verts(1).X = 250
			verts(1).Y = 250
			verts(1).Z = 0.5F
			verts(1).Rhw = 1
			verts(1).Color = System.Drawing.Color.Brown.ToArgb
			verts(2).X = 50
			verts(2).Y = 250
			verts(2).Z = 0.5F
			verts(2).Rhw = 1
			verts(2).Color = System.Drawing.Color.LightPink.ToArgb
			stm.Write(verts)
			vb.Unlock()
		End Sub

		Private Sub Render()
			If device Is Nothing Then
				Return
			End If
			device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0F, 0)
			device.BeginScene()
			device.SetStreamSource(0, vertexBuffer, 0)
			device.VertexFormat = CustomVertex.TransformedColored.Format
			device.DrawPrimitives(PrimitiveType.TriangleList, 0, 1)
			device.EndScene()
			device.Present()
		End Sub

		Protected Overloads Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
			Me.Render()
		End Sub

		Protected Overloads Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)

		End Sub

		Shared Sub Main()
			' Using 
			Dim frm As Vertices = New Vertices()
			Try

				End If
				frm.Show()
				While frm.Created
					frm.Render()
					Application.DoEvents()
				End While
			Finally
				CType(frm, IDisposable).Dispose()
			End Try
		End Sub
	End Class
End Namespace

تم تعديل هذه المشاركة بواسطة eng_3llam في 8 يونيو 2006 في 14:40

#2

لم ار اخطاء و لكن لم تضع التحويلات علي المثلث Transformations لكي تنقه من محاوره إلي محاور العالم world Co-ordinates .

استعن بهذا الدرس لتطبيق التحويلات علي الكود

device.Transform.World = Matrix.Identity; 
device.Transform.View = Matrix.Identity; 
Size displaySize = m_framework.DisplaySize; 
float aspect = (float)displaySize.Width / (float)displaySize.Height; 
device.Transform.Projection = Matrix.PerspectiveFieldOfViewLeftHanded( (float)Math.PI / 3.0f, aspect, 0.1f, 1000.0f ); 

// Set render states 
device.RenderState.Lighting = false; 
device.RenderState.FillMode = m_framework.FillMode;

http://c-unit.com/tutorials/mdirectx/?t=31

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

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

#3

السلام عليكم

مشكور أخي أحمد

واسف على تأخر ردي بسبب أنشغالي

تم تعديل هذه المشاركة بواسطة hunterxhunter في 9 يونيو 2006 في 20:01

هذا الموضوع مغلق.

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