Не выводится текст в OpenGL GLUT

Я пытаюсь вывести текст из файла на viewport посредством функций glut, а потом организовать их "Падение" и ударение с отскоком от низа моего vieport'а. Проблема в том, что я мало себе представляю как реализовать перемещение символов и их "Отскок" от низа порта, кроме того мои символы по какой-то неведомой мне причине не выводятся. Вставлять исходник Read Manager'а не буду, т.к в этом нет смысла.

#include "ReadManager.h"
#include <string>
#include <glut.h>

GLint Width = 750;
GLint Height = 750;
char Text[1000];
ReadManager Manager;

void DisplayText(GLfloat X, GLfloat Y, GLint red, GLint green,
    GLint blue, const char* string)
{
    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    gluOrtho2D(0.0, Width, 0.0, Height);

    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();
    glColor3f(red,green,blue);
    glRasterPos2f(X, Y);
    for (size_t i = 0; i < strlen(string); i++)
    {
        glutBitmapCharacter(GLUT_BITMAP_9_BY_15, string[i]);
    }
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();

    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
}
void Display(void)
{
    glClearColor(0, 0, 0, 1);
    glClear(GL_COLOR_BUFFER_BIT);
    GLint red = rand() % 255;
    GLint blue = rand() % 255;
    GLint green = rand() % 255;
    DisplayText(-50 , 0 , red, blue, green, Text);
    glFlush();
}



void Reshape(GLint w, GLint h)
{
    Width = w;
    Height = h;
    /* устанавливаем размеры области отображения */
    glViewport(0, 0, w, h);
    /* ортографическая проекция */
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, w, 0, h, -1.0, 1.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

void Keyboard(unsigned char key, int x, int y)
{
#define ESCAPE '\033'
    if (key == ESCAPE)
        exit(0);
}

int main(int argc, char* argv[])
{
    char TheFileName[50];

    std::cout << "Enter the file name with extension!" << std::endl;
    std::cin >> TheFileName;
    Manager.SetFileName(TheFileName);
    Manager.GetFileToWriteFrom()->open(Manager.GetFileName());
    
    if (Manager.GetFileToWriteFrom()->is_open())
    {
        int i = 0;
        while (Manager.GetFileToWriteFrom()->get(Text[i]))
        {
            i++; 
            std::cout << Text[i];
        }
    }
    else
    {
        std::cout << "CANT OPEN FILE" << std::endl;
        return -1;
    }

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB);
    glutInitWindowSize(Width, Height);
    glutCreateWindow("Running words!");
    glutDisplayFunc(Display);
    glutReshapeFunc(Reshape);
    glutKeyboardFunc(Keyboard);
    glutMainLoop();
    Manager.GetFileToWriteFrom()->close();
    return 0;
}

Подскажите, пожалуйста, как решить эту проблему, или дайте ссылку, где я мог бы об этом вычитать.


Ответы (0 шт):