glut/freeglut einfache 2D Text in Fenster ausgeben



  • Hallo, kann mir einer helfen einen einfachen Text und eine Variable in einem Fenster auszugeben? Ich habe schon im Internet gesucht, aber ich finde nichts, was bei mir funktioniert. Bei den Beispielen steht nicht dabei welche header Dateien und linker ich benutzen soll und ich bin total aufgeschmissen.



  • Vielleicht sollen die Beispiele nur Beispiele sein und keine Komplettlösung, damit du daraus lernst und es anwendest und nicht nur kopierst?



  • denkerschenker schrieb:

    Vielleicht sollen die Beispiele nur Beispiele sein und keine Komplettlösung, damit du daraus lernst und es anwendest und nicht nur kopierst?

    Danke für deinen sinnlosen beitrag.

    Move along





  • Namal schrieb:

    Ich habe schon im Internet gesucht, aber ich finde nichts, was bei mir funktioniert.

    Dann suchst du falsch. Da findet sich jede Menge. Nur musst du wissen wie du die Informationen verwendest. 😉

    Namal schrieb:

    Bei den Beispielen steht nicht dabei welche header Dateien und linker ich benutzen soll und ich bin total aufgeschmissen.

    Das findest du doch über eine simple Suche heraus ?

    Bevor du dich an so komplexe Sachen wie Grafik mit glut machst, solltest du zumindest verstehen wie externe Bibliotheken funktionieren.



  • also ich hab es jetzt mit glutBitmapCharacter() hin bekommen, es ist aber umständlich jeden einzelnen Buchstaben einzeln erst in einem array abzuspeichern. Da gibt es ja auch glutBitmapString(), aber es geht nur mit freeglut, ich habe den Header also durch <GL/freeglut.h> ersetzt und -lfreeglut gelinkt abar das Beispiel

    glRasterPos2i(50, 50);
    	glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
    	glutBitmapString(GLUT_BITMAP_HELVETICA_18, "text to render");
    

    geht bei mir nicht, ich bekomme die Fehler

    Fehler: ungültige Umwandlung von »const char*« in »const unsigned char*«
    Fehler:Argument 2 von »void glutBitmapString(void*, const unsigned char*)« wird initialisiert
    

    Was mach ich denn falsch 😕



  • Hast schön von Stackoverflow abgeschrieben :P.
    Aber wie wäre es mal mit verstehen, statt nur zu kopieren?
    Ansonsten steht doch da, was du falsch machst.

    glRasterPos2i(50, 50);
    glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
    std::string text = "text to render";
    glutBitmapString(GLUT_BITMAP_HELVETICA_18, text.c_str());
    

    Sollte funktionieren.

    Ansonsten empfehle ich dir SFML fürs Fenster Management zu verwenden, da gibts auch eine ordentliche Font Rendering Klasse. Für dich als Anfänger vielleicht einfacher. Ansonsten schau dir den Link an den ich vorher gepostet habe.



  • Scorcher24 schrieb:

    Sollte funktionieren.

    Tut es leider nicht, bekomme genau die selben Fehler.



  • Namal schrieb:

    Scorcher24 schrieb:

    Sollte funktionieren.

    Tut es leider nicht, bekomme genau die selben Fehler.

    Ok, mein Fehler.
    Laut Doku von Freeglut verlangt glutBitmapString einfach nur char*.
    http://freeglut.sourceforge.net/docs/api.php

    void glutBitmapString ( void *font, char *string );
    

    Laut manpage const unsigned char*:
    http://linux.die.net/man/3/glutbitmapstring

    void glutBitmapString(void *font, const unsigned char *string);
    

    Schon komisch.
    Dann caste es doch einfach mal nach unsigned:

    glutBitmapString(GLUT_BITMAP_HELVETICA_18, reinterpret_cast<const unsigned char*>(text.c_str()));
    

    oder falls du pures C verwenden willst:

    glutBitmapString(GLUT_BITMAP_HELVETICA_18,(const unsigned char*)"text to render");
    


  • Damit funktioniert es, danke.


Log in to reply