OpenGL - Problem mit Bitmaps

  • C#

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Trudi.

    OpenGL - Problem mit Bitmaps

    Ich habe mich gestern abend mal mit OpenGL beschäftigt, und ein bisschen angefangen mich einzuarbeiten, ich bin jetzt soweit, das ich bereit bin zu Zeichnen. Die funktionen hab ich erstmal gewrappt:

    C#-Quellcode

    1. var isCreated = _openGL.Create(Control.FromHandle(GraphicsDevice.DeviceHandle));
    2. if (!isCreated) throw new OpenGLException("SGL was unable to create the opengl32 context.");
    3. _openGL.ShadeModel(OpenGL.SMOOTH);
    4. _openGL.ClearColor(Color.CornflowerBlue);
    5. _openGL.ClearDepth(1.0f);
    6. _openGL.Enable(OpenGL.DEPTH_TEST);
    7. _openGL.DepthFunc(OpenGL.LEQUAL);
    8. _openGL.Hint(OpenGL.PERSPECTIVE_CORRECTION_HINT, OpenGL.NICEST);
    9. _openGL.Viewport(0, 0, GraphicsDevice.GraphicResolution.Width, GraphicsDevice.GraphicResolution.Height);


    //SpriteBatch wird geöffnet:

    C#-Quellcode

    1. public void Begin()
    2. {
    3. _openGL.Clear(OpenGL.COLOR_BUFFER_BIT | OpenGL.DEPTH_BUFFER_BIT);
    4. _openGL.Begin(OpenGL.QUADS);
    5. }


    //Zeichen vorgang abgeschlossen

    C#-Quellcode

    1. public void Close()
    2. {
    3. Present();
    4. }
    5. private void Present()
    6. {
    7. _openGL.End();
    8. }



    Soweit ich OpenGL verstanden habe, läuft das so, man bildet eine Geometrische Figur, z.B ein Dreieck oder ein Quadrat, dem Quadrat weißt man dann seine Breite Länge und Position zu. Mit einer DisplayList weißt man dann der Geometrischen Figur eine Texture zu (GL_TEXTURE2).

    Das Problem ist nun, das ich überhaupt nicht weiß wie ich nun weiter mache, ich muss Bitmaps zeichnen können.. Hat jemand Erfahrung mit OpenGL im C++ Bereich, und kann mir helfen die richtigen Funktionen in C# zu wrappen?
    Was genau brauchst du jetzt? Die Textur laden oder wie man die Textur auf die Vertexen gepannt bekommt?
    Also laden sollte ca. so funktionieren: opentk.com/doc/graphics/textures/loading
    Ah ja hab noch einen Link in meinen Favouriten gefunden: opentk.com/node/2458?page=1


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Falls du Windows 8 hast: Unter %ProgramFiles%\Windows Kits\8.0\Include\um\gl liegen die Header von den OpenGL-Libs (GL.h und GLU.h), da findest du die API-Deklarationen.
    Alternativ könntest du dir den Source-Code vom OpenTK angucken (mit den fertigen gewrappten Funktionen).
    Da es derzeit sonst nichts richtiges gibt zum Inspirieren (abgucken *g*) gibt, musst du dir das da halt raussuchen... :)

    Edit: Du könntest auch ein VC++ Projekt erstellen, oben #include <gl\GL.h> eingeben und per Strg+Umschalt+G in den Header springen.

    MfG

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

    Naja also die API-Deklarationen sollten ja wirklich nicht das problem sein. a) sind die nativen deklarationen auf msdn und b) gibt es nun wirklich genug wrapper dafür. Kp. was es da alles gab glaub tao, opentk,...


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Weil mich das auch interessiert, habe ich mal ein bisschen gesucht und gefunden: SharpGL
    Hierkann man auch die API-Definitionen sehen und wenn man dann noch die konstante LIBRARY_OPENGL ändert, dürfte das sogar auf Linux/Mac laufen.

    Edit: Das ist doch nicht ganz so einfach, man muss nämlich das Fenster für OpenGL selber erstellen. Dazu nimmt man am besten die API-Funktionen der jeweiligen Platform (siehe OpenTK). Sieht ziemlich umständlich aus...

    MfG

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Trudi“ ()