OpenGL/Text

From ProgrammingExamples
< OpenGL
Revision as of 20:48, 23 November 2010 by Daviddoria (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This example displays white text in the lower left corner of the window.

Text.cxx

#include <iostream>
#include <cstdio>
#include <string>
#include <cstdlib>
 
#include <GL/glut.h>
 
using namespace std;
 
void display(void);
void polygon(int a, int b, int c , int d);
void DrawCube();
void printtext(int x, int y, string String);
 
int WindowHeight = 1000;
int WindowWidth = 1000;
 
int main(int argc, char *argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
	glutInitWindowSize(WindowWidth, WindowHeight);
	glutInitWindowPosition(0, 0);
 
	glutCreateWindow("OpenGL Text Example");
 
	glutDisplayFunc(display);
 
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(70, 1, 1, 100);
 
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
 
	gluLookAt(2, 2, 10, 2, 0, 0, 0, 1, 0);
 
	glutMainLoop();
	return 0;
}
 
 
void printtext(int x, int y, string String)
{
//(x,y) is from the bottom left of the window
    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    glOrtho(0, WindowWidth, 0, WindowHeight, -1.0f, 1.0f);
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();
    glPushAttrib(GL_DEPTH_TEST);
    glDisable(GL_DEPTH_TEST);
    glRasterPos2i(x,y);
    for (int i=0; i<String.size(); i++)
    {
        glutBitmapCharacter(GLUT_BITMAP_9_BY_15, String[i]);
    }
    glPopAttrib();
    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();
}
 
void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
	glEnable(GL_DEPTH_TEST);
 
    char string[64];
    sprintf(string, "something");
    printtext(10,10,string);
 
	glutSwapBuffers();
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
 
PROJECT(Text)
 
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") #g++
 
INCLUDE_DIRECTORIES(/usr/include/ /usr/local/include/)
 
LINK_DIRECTORIES(/usr/lib /usr/local/lib)
 
ADD_EXECUTABLE(Text Text.cpp)
 
TARGET_LINK_LIBRARIES(Text glut GLU GL Xmu X11 )