#include #include #include #include #define WINDSIZEX 100 #define WINDSIZEY 100 void DrawPrim() { long i; glColor3f(0.0, 1.0, 0.0); glBegin(GL_POINTS); glVertex2i(16, 50); glVertex2i(17, 50); glVertex2i(16, 51); glVertex2i(17, 51); glEnd(); } void CreateList(long whichList, GLuint listNum, GLenum mode) { switch (whichList) { case 1: glNewList(listNum, mode); DrawPrim(); glCallList(listNum+1); glEndList(); break; case 2: glNewList(listNum, mode); DrawPrim(); glEndList(); break; } } GLuint firstList; void init(void) { glClearColor(0.0, 0.0, 0.0, 0.0); firstList = glGenLists(2); CreateList(2, firstList+1, GL_COMPILE); } static void test(void) { glClear(GL_COLOR_BUFFER_BIT); CreateList(1, firstList, GL_COMPILE_AND_EXECUTE); } void display(void) { glViewport(0, 0, WINDSIZEX, WINDSIZEY); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0, WINDSIZEX, 0, WINDSIZEY); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); test(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(WINDSIZEX, WINDSIZEY); glutInitWindowPosition(100, 100); glutCreateWindow(argv[0]); init(); glutDisplayFunc(display); glutMainLoop(); return 0; }