Moin zusammen,
ich habe mal wieder ein kleines Problemchen. Ich habe mal versucht mich in OpenGL einzuarbeiten und mit Dreiecken und Flächen ging das alles soweit auch schon ganz gut.
Nur kam ich auf die Idee mal einen Kreis zeichnen zu wollen, da ich letztendlich eine 3 Dimensionale Erde erzeugen möchte, die sich drehen lässt etc.
Aber leider wird mir kein Kreis gezeichnet. Das einzige, was ich sehe, ist eine vertikale gepunktete Linie. Ich habe es über ein Schleife und ein Array von Punkten probiert. Das ganze soll in Visual Basic stattfinden.
Die andere Möglichkeit, die ich gefunden habe, ist GLUT? zu installieren, wobei ich dafür keine wirklich für mich verständliche Anleitung gefunden habe.
Anbei der Quellcode.
ich habe mal wieder ein kleines Problemchen. Ich habe mal versucht mich in OpenGL einzuarbeiten und mit Dreiecken und Flächen ging das alles soweit auch schon ganz gut.
Nur kam ich auf die Idee mal einen Kreis zeichnen zu wollen, da ich letztendlich eine 3 Dimensionale Erde erzeugen möchte, die sich drehen lässt etc.
Aber leider wird mir kein Kreis gezeichnet. Das einzige, was ich sehe, ist eine vertikale gepunktete Linie. Ich habe es über ein Schleife und ein Array von Punkten probiert. Das ganze soll in Visual Basic stattfinden.
Die andere Möglichkeit, die ich gefunden habe, ist GLUT? zu installieren, wobei ich dafür keine wirklich für mich verständliche Anleitung gefunden habe.
Anbei der Quellcode.
VB.NET-Quellcode
- Imports OpenTK
- Imports OpenTK.Graphics
- Imports OpenTK.Graphics.OpenGL
- Public Class Form1
- Private Sub GlControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GlControl1.Load
- GL.ClearColor(Color.Black)
- End Sub
- Private Sub GlControl1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles GlControl1.Paint
- GL.Clear(ClearBufferMask.ColorBufferBit)
- GL.Clear(ClearBufferMask.DepthBufferBit)
- Dim perspective As Matrix4 = Matrix4.CreatePerspectiveFieldOfView(1.04, 4 / 3, 1, 10000)
- Dim lookat As Matrix4 = Matrix4.LookAt(100, 20, 0, 0, 0, 0, 0, 1, 0)
- GL.MatrixMode(MatrixMode.Projection)
- GL.LoadIdentity()
- GL.LoadMatrix(perspective)
- GL.MatrixMode(MatrixMode.Modelview)
- GL.LoadIdentity()
- GL.LoadMatrix(lookat)
- GL.Viewport(0, 0, GlControl1.Width, GlControl1.Height)
- GL.Enable(EnableCap.DepthTest)
- GL.DepthFunc(DepthFunction.Less)
- GL.Rotate(NumericUpDown1.Value, 0, 0, 1)
- GL.Rotate(NumericUpDown2.Value, 0, 1, 0)
- Dim koordinaten(361) As Point
- For i As Integer = 0 To 360
- koordinaten(i).X = 50 * Math.Cos(i)
- koordinaten(i).Y = 50 * Math.Sin(i)
- Next
- GL.Begin(BeginMode.Points)
- For i As Integer = 0 To 360
- GL.Color3(Color.Green)
- GL.Vertex3(koordinaten(i).X, koordinaten(i).Y, 0)
- Next
- GL.End()
- GraphicsContext.CurrentContext.VSync = True
- GlControl1.SwapBuffers()
- End Sub
- Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged
- GlControl1.Invalidate()
- End Sub
- Private Sub NumericUpDown2_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown2.ValueChanged
- GlControl1.Invalidate()
- End Sub
- End Class