Не выводится текст в 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;
}
Подскажите, пожалуйста, как решить эту проблему, или дайте ссылку, где я мог бы об этом вычитать.