All pastes #122466 Raw Edit

fgfdg

public text v1 · immutable
·published 2006-08-08 18:08 UTC
rendered paste body
#include <GL/glut.h>
#include <string>
#include <iostream>
using namespace std;
double WIDTH = 400, HEIGHT = 400;
double HMIN = -WIDTH/2, HMAX = WIDTH/2, KMIN = -HEIGHT/2, KMAX = HEIGHT/2;
void drawString (GLfloat x, GLfloat y, void *font, string s) {
glRasterPos3f (x, y, 0);
for (int i = 0; i < s.length (); i++) glutBitmapCharacter (font, s[i]);
}
void display () {
int n = 40;
for (double i = 0; i <= n; i++) {
glPushMatrix ();
glTranslatef (HMIN + i * (HMAX - HMIN) / n, KMAX - i * (KMAX - KMIN) / n, 0);
glRotatef (i * 360.0 / n, 0, 0, 1);
glScalef (50, 50, 1);
glBegin (GL_POLYGON);
glColor3f (1, 0, 0);
glVertex3f (0, 0, 0);
glColor3f (0, 1, 0);
glVertex3f (1, 0, 0);
glColor3f (0, 0, 1);
glVertex3f (0, 1, 0);
glEnd ();
glPopMatrix ();
}
glutSwapBuffers ();
glColor3f (1, 1, 1);
}

void keyboard (unsigned char key, int x, int y) {
if (key == 27) exit (0); // if ESC was pressed, then quit program
double X = x * (HMAX - HMIN) / WIDTH + HMIN;
double Y = (HEIGHT - y) * (KMAX - KMIN) / HEIGHT + KMIN;
string s = " ";
s[0] = key;
drawString (X, Y, GLUT_BITMAP_HELVETICA_18, s);
glutPostRedisplay ();
}
int main (int argc, char** argv) {
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize (WIDTH, HEIGHT);
glutInitWindowPosition (100, 100);
glutCreateWindow ("Keyboard Input");
glClearColor (0, 0, 0, 0);
glColor3f (1, 1, 1);
glMatrixMode (GL_MODELVIEW);
glOrtho(HMIN, HMAX, KMIN, KMAX, -1, 1);
glClear (GL_COLOR_BUFFER_BIT);
glutKeyboardFunc (keyboard);
glutDisplayFunc (display);
glutMainLoop ();
return 0;
}