Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » OpenGL » Bitmap ausserhalb Bildschirm zeichnen (Textscroll)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.10.2005, 19:54 Uhr
WindDancer1



Hi Leute, ich hätte da gern mal ein kleines Problem. :-)
Ich habe gerade eben mit GLUT angefangen und möchte eine Bitmap von rechts nach links über den Bildschirm scrollen lassen. (Textscroll mit glutBitmapCharacter)
Das Problem sieht folgendermassen aus: Immer wenn der linke Rand des Textes den linken Rand des Bildschirms berührt, verschwindet der komplette Text. (Der Text wird nicht langsam aus dem Bild gefahren, sondern verschwindet immer urplötzlich.)

Soll:
TestText
estText
stText
tText
...

Ist:
TestText
[nichts mehr]


Ich hoffe ihr könnt mir helfen!
Vielen Dank im Voraus!

winddancer1


C++:
#include <GL/glut.h>
#include <iostream.h>
#include <string.h>

// globale Konstanten
GLfloat const cLinkerRand = -100.0;
GLfloat const cRechterRand = 100.0;

// globale Variablen
GLfloat x1 =0.0;
GLfloat y1 =0.0;
GLfloat rSize =25;

GLfloat xStep =1.0;
GLfloat yStep =1.0;

GLfloat wndHeight;
GLfloat wndWidth;

GLint timerInterval = 10;

GLint iTextbreite = 0;

// Prototypen
void renderScene(void);
void timerFunction(int value);
void setupRC(void);
void changeSize(GLsizei w, GLsizei h);
void drawText(void);

//--- [ Funktionen ] ---
void main()
{
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutCreateWindow("Scroll");
    glutDisplayFunc(renderScene);
    glutReshapeFunc(changeSize);
    glutTimerFunc(timerInterval,timerFunction,1);
    setupRC();

    glutMainLoop();

}

void renderScene()
{
    glClear(GL_COLOR_BUFFER_BIT);
    drawText();
    glutSwapBuffers();

}

void timerFunction(int value)
{
    if (x1 < (cLinkerRand - iTextbreite))
    {
        x1 = cRechterRand - xStep ;
    }
    x1 -= xStep;

    // Neuzeichnen und Timer auf 33ms setzen
    glutPostRedisplay();
    glutTimerFunc(timerInterval, timerFunction, 1);

}

void setupRC()
{
    glClearColor(0.0, 0.0, 0.0, 0.0);
}


void changeSize(GLsizei w, GLsizei h)
{
    GLfloat seitenverh;

    if (h == 0)
        h = 1;

    glViewport(0, 0, w, h);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    
    seitenverh = GLfloat(w) / GLfloat(h);
    
    if (w <= h)
    {
        wndWidth = cRechterRand;
        wndHeight = cRechterRand / seitenverh;
        glOrtho(cLinkerRand, cRechterRand, -wndHeight, wndHeight, 1.0, -1.0);
    }
    else
    {
        wndWidth = cRechterRand * seitenverh;
        wndHeight = cRechterRand;
        glOrtho(-wndWidth, wndWidth, cLinkerRand, cRechterRand, 1.0, -1.0);
    }


    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

}

void drawText()
{
    glColor3f(1.0, 0.0, 0.0);
    glRasterPos3f (x1, y1, 0);
    
    iTextbreite =0;
    char myText[] = "All Hail LST";
    
    for (unsigned int i=0; i<= strlen(myText); i++)
    {
        glutBitmapCharacter (GLUT_BITMAP_TIMES_ROMAN_24, myText[i]);
        iTextbreite += glutBitmapWidth(GLUT_BITMAP_TIMES_ROMAN_24, myText[i]);
    }

}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.10.2005, 14:57 Uhr
~winddancer1
Gast


Danke, hat sich erledigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ OpenGL ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: