OpenGL Textausgabe



  • Hallo,

    ich habe ein seltsames Problem mit der Textausgabe:

    // String auf OpenGL Fenster ausgeben
    void drawString (char *s, bool animatedText)							
    {
    
    	// draw static text ...
    	if (!animatedText)
    	{
    // FUNKTIONIERT
    glutBitmapCharacter (GLUT_BITMAP_HELVETICA_10, (char)'.');
    	}
    
    	// draw moving text ...
    	if (animatedText)
    	{
    //FUNKTIONIERT NICHT
    		CreateThread(0, 0, TextFred, NULL, 0, 0);	
    	}
    }
    
    // Timer Thread
    DWORD WINAPI TextFred(LPVOID ptr)
    {
    
    	glutBitmapCharacter (GLUT_BITMAP_HELVETICA_10, (char)'A');
    
    	return 0;
    }
    

    Bei dem Thread erfolgt einfach keine Ausgabe. Es gibt keinen Fehler.
    Jemand eine Idee warum?



  • Der OpenGL-Context muss fuer jedem Thread gesetzt werden.
    Ueberleg Dir besser nochmal ob wirklich mehrere Threads rendern muessen.



  • Jup ich habs gerade ergoogelt.

    Hmm naja ich habe mehrere Textausgaben und bei Auswahl sollen diese gescrollt werden. Das wollte ich in einem separaten Thread machen, um nicht die main-loop zu blockieren...



  • Wie hattest du dir denn diese Scroll-Funktion vorgestellt?



  • Du musst dir folgendes vorstellen:

    Der Textstring hat n Zeichen:

    "Ich bin ein Teststring".

    int start = 0;
    int end = 10;
    

    Es würden jetzt Zeichen ab start bis end dargestellt. Nach einem sleep(50) wird

    start++;
    end++;
    

    gemacht, mit den entsprechenden Abfragen bzgl Stringlänge. Kommt man am Ende vom String an wird

    start--;
    end--;
    

    ausgeführt. Dies suggeriert das Scrollen vom Text nach links und rechts, wobei immer nur 10 Zeichen zu sehen sind.

    Ich hoffe es ist eingermaßen verständlich.


Anmelden zum Antworten