Text unter OpenGL



  • zu 1. nehe.gamedev.net
    zu 2. selbermachen... 2d interface rendern->maus und tastatur abfragen



  • wglUseFontBitmaps() generiert 2D Schriften als Display-Liste. Allerdings ist diese Methode nur unter Windows vorhanden.



  • Also ich habs einfach mit Outtext gemacht, ging einwandfrei, zum. im Fenster, im Vollbild hab ichs nie ausprobiert.

    DrawGLScene();
    
            SwapBuffers(hDC);
            //hier fängt Textausgabe an
            PaintDC = GetDC(hWnd); 
            SetTextColor( PaintDC, RGB( 255,   0,  0) );
            SetBkColor  ( PaintDC, RGB( 0, 0,  0) );
            sprintf(cfps,"Fps: %d",fps);
            TextOut (PaintDC, 1, 1, LPCSTR(cfps), 7); 
            ReleaseDC (hWnd, PaintDC);
    

    Das ganze steht in der WinMain, der der Text is bloss nicht durchsichtig, aber ich denke das würde man auch noch hinkriegen, habs nie probiert.

    [ Dieser Beitrag wurde am 18.02.2003 um 08:36 Uhr von ichbinder editiert. ]

    [ Dieser Beitrag wurde am 18.02.2003 um 08:38 Uhr von ichbinder editiert. ]



  • Das ist aber GDI und für ein Spiel (soll es doch werden, oder?) etwas langsam 🙄



  • ja, soll n game werden....
    das problem ist, dass ich halt gern ein feld hätte, wo ich ne zahl eingeben kann.... und halt zb die framerate irgendwo ausgeben würde...... das nehe turorial fand ich ziemlich kompliziert...



  • Dann fassen wir das Nehe Tutorial kurz zusammen ...
    Du lädts dir ein Bild mit 256 Zeichen darauf ...
    Damit erstellt du eine Textur. Wenn du nun ein Zeichen rendern willst renderst du einfach ein kleines Viereck und machst die Textur an der entsprechenden Stelle da rauf ...
    fertig.



  • Gibt es irgendeine Möglichkeit direkt in den Framebuffer zu schreiben ?
    Dann könnte man so eine Art Bitmap für jedes Zeichen anfertigen und einfach in die Framedaten kopieren



  • Möglich ist alles, dies dürfte allerdings langsam werden.
    OpenGL ist eine 3D Api und auf Polygone ausgelegt, direktes schreiben wird langsam und ist unkomfortabel.
    Machs mit Viereckigen Polygonen die zum User schaun ...



  • Dann hat er aber das Problem, das seine Schrift durch die anderen Polys verdeckt wird, wenn diese z.B durch eine Bewegung der Szenerie zu nahe kommen.



  • 1. Man setzt eine Orthografische Projektionsmatrix (2D). Das bewirkt das man die Polygone so positionieren kann als wären es Pixel auf dem Bildschirm.
    Dann würde die FPS Anzeige also immer an Stelle x=ResX-wort.length*size y=ResY-Size
    positioniert werden
    (oder auch an jeder anderen beliebigen Stelle)

    2. Man benutzt blending, das heist die schwarzen Pixel bei den Buchstaben werden nicht gezeichnet, man sieht alles, auch hinter der FPS Anzeige.


Anmelden zum Antworten