FreeGlutフレームワーク


CEGUIを始める前に、まずGlutのフレームワークプログラムを書きます.なお、ここではGlutではなくFreeGlutを使用しています.これは,GlutでglutMainLoop()が呼び出された後,プログラムは二度と戻ってこないが,FreeGlutにはglutMainLoopEvent関数があり,ループごとに戻ってくるからである.これは私たちにCEGUIをレンダリングする機会を与えた.
glut_loop.cpp
#include
void render(void);
void keyFunc(unsigned char, int, int);

int window_id;
bool keep_running = true;
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);

// Glut
glutInitWindowSize(640, 480);
window_id = glutCreateWindow("GLUT Loop");

//
glutKeyboardFunc(keyFunc);

//
while(keep_running)
{
glutMainLoopEvent();
render();
glutSwapBuffers();
}

//
glutDestroyWindow(window_id);
return 0;
}

//
void render()
{
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}

//
void keyFunc(unsigned char key, int x, int y)
{
switch (key)
{
case 113: // 'q',
case 81: // 'Q',
case 27: // 'ESC'
keep_running = false;
break;
}
}

 
Makefile:
# Makefile to compile glut_loop
glut_loop: glut_loop.o
g++ glut_loop.o -lglut -o glut_loop
#
glut_loop.o: glut_loop.cpp
g++ -c glut_loop.cpp
#
.PHONY: clean
clean:
rm -rf *.o glut_loop