OpenTK Bild und Ein paar Formen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von 00yoshi.

    OpenTK Bild und Ein paar Formen

    Hi,

    ich habe ein Projekt angehangen und wollte mal Fragen ob mir jemand dabei helfen kann das Bild darzustellen.. 2 unabhängig bewegbare Objekte hab ich schon drinne.

    Bisher muss ich mich leider mit rumprobieren rumärgern was wie genau funktioniert.

    Das Bild soll letztendlich irgendwann den Boden darstellen, also sozusagen eine Bodenfläche, aber ich wollte erstmal schauen wie ich das Dingen überhaupt male.
    Ich hatte mich nun auch mit Unity3D auseinandergesetzt, allerdings sind die gefunden Tutorials überhaupt nicht mehr Up to Date :/..

    Der hier macht genau das wo ich mal hin möchte, bzw. wo ich eigentlich anfangen möchte.
    Dateien
    • OpenTK - 2.rar

      (1,2 MB, 161 mal heruntergeladen, zuletzt: )
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rootbob91“ ()

    1) Was hat Unity3D mit einem OpenGL/AL Wrapper zu tun?
    2) Die Tutorials zu Unity3D können zwar zu früheren Versionen sein, aber so oder so ähnlich klappen diese Funktionen auch heute noch.
    3) OpenTK hat einige Tutorialreihen, wo man auch mit starten sollte. Mit OpenTK hat man einen guten Zugriff auf alle OpenGL/AL Funktionen, dass heißt aber, dass man hiermit sich eine eigene "Engine" schreibt. Deshalb sollte man alles von Grund auf verstehen und mit den Lehrfilmen starten. Sonst kratzt man sich den Quellcode zusammen, was kein Programmieren ist.
    Link zur Dokumentation: opentk.com/doc/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „3Angle“ ()

    Also so mach ich das laden immer:

    VB.NET-Quellcode

    1. ID = GL.GenTexture()
    2. GL.BindTexture(TextureTarget.Texture2D, ID)
    3. Dim bmp As Bitmap
    4. Dim bmp_data As Imaging.BitmapData
    5. bmp = bitmap.fromfile("irgendeindateiname")
    6. bmp_data = bmp.LockBits(New Rectangle(0, 0, bmp.Width, bmp.Height), Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
    7. GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, bmp_data.Width, bmp_data.Height, 0,
    8. OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bmp_data.Scan0)
    9. bmp.UnlockBits(bmp_data)
    10. GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, TextureMinFilter.Nearest)
    11. GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, TextureMagFilter.Nearest)

    und einen integer namens ID zur klasse hinzufügen und das ins load event. (gl.enable(enablecap.texture2d) nicht vergessen)
    Textur so drauflegen:

    VB.NET-Quellcode

    1. gl.begin(primitivetype.quads)
    2. gl.vertex3(0,0) : gl.texcoord2(0,0)
    3. gl.vertex3(0.1,0) : gl.texcoord2(1,0)
    4. gl.vertex3(0.1,0.1) : gl.texcoord2(1,1)
    5. gl.vertex3(0,0.1) : gl.texcoord2(0,1)
    Ist von OpenGL 1 aber ich finde das alte Zeug besser bei Open GL 4 muss man alles selbst machen.Ich habe auch ein OpenGL Wrapper geschrieben (NetGL). Hier ein Guter Link wenn es um Texturen geht foerterer.com/cpp/texturen/bilder.htm

    C#-Quellcode

    1. gl.begin(primitivetype.quads)
    2. gl.vertex3(0,0) : gl.texcoord2(0,0)
    3. gl.vertex3(0.1,0) : gl.texcoord2(1,0)
    4. gl.vertex3(0.1,0.1) : gl.texcoord2(1,1)
    5. gl.vertex3(0,0.1) : gl.texcoord2(0,1)


    ich mache das immer so:

    C#-Quellcode

    1. gl.begin(Triangles);
    2. // Textur Unten
    3. gl.texcoord2(0,0);
    4. gl.vertex3(0,0);
    5. // Texture unten Rechts
    6. gl.texcoord2(1,0);
    7. gl.vertex3(0.1,0) ;
    8. // Texture Oben Rechts
    9. gl.texcoord2(1,1);
    10. gl.vertex3(0.1,0.1);
    11. // Texture Oben Links
    12. gl.texcoord2(0,1);
    13. gl.vertex3(0,0.1);
    14. gl.end();
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Wenn ich gl.begin(quads) eingebe, kommt automatisch
    GL.Begin(BeginMode.Quads) raus, obwohl es
    GL.Begin(PrimitiveType.Quads) sein sollte, da es neuer ist. Importierst du da BeginMode oder PrimitiveType?
    Edit:
    und wo ist der unterschied zwischen
    gl.begin(PrimitiveType.Triangles) und gl.begin(Triangles);