00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "GLInterface.h"
00022
00023 #include "system.h"
00024 #include <GL/gl.h>
00025 #include <GL/glu.h>
00026
00027 #include "Window.h"
00028
00029 GLInterface::GLInterface(Window* p_window)
00030 {
00031 window = p_window;
00032 window ->registerMessagequeue(&inputMessages);
00033 }
00034
00035 GLInterface::~GLInterface()
00036 {
00037 delete window;
00038 }
00039
00040
00041 int GLInterface::initGL()
00042 {
00043 window->makeCurrent();
00044 base = window->BuildFont();
00045
00046 glShadeModel(GL_SMOOTH);
00047 glClearColor(0.05f, 0.05f, 0.05f, 1.0f);
00048 glClearDepth(1.0f);
00049 glEnable(GL_DEPTH_TEST);
00050 glDepthFunc(GL_LEQUAL);
00051 glDepthRange(0,1);
00052 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
00053 glMatrixMode(GL_PROJECTION);
00054
00055 GLfloat LModelAmbient[4] = {1.0, 1.0, 1.0, 1.0};
00056 GLfloat L0Position[4] = {0.0, 2000.0, 0.0, 0.0};
00057 glEnable(GL_LIGHT0);
00058
00059 glEnable(GL_NORMALIZE);
00060 glEnable (GL_LIGHTING);
00061 glEnable (GL_COLOR_MATERIAL);
00062 glLightfv(GL_LIGHT0, GL_POSITION, &L0Position[0]);
00063 glLightModelfv(GL_LIGHT_MODEL_AMBIENT, &LModelAmbient[0]);
00064 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 1);
00065 glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
00066 glDisable (GL_CULL_FACE);
00067 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
00068 glEnable(GL_TEXTURE_2D);
00069
00070 return 0;
00071 }
00072
00073 int GLInterface::glPrint2d(double x, double y, const char *fmt, ...)
00074 {
00075 int ret = 0;
00076
00077 glPushMatrix();
00078
00079 glRasterPos2d(x, y);
00080 char text[256];
00081 va_list ap;
00082
00083 if (fmt == NULL)
00084 return -1;
00085
00086 va_start(ap, fmt);
00087 vsprintf_s(text, fmt, ap);
00088 va_end(ap);
00089
00090 glPushAttrib(GL_LIST_BIT);
00091 glListBase(base - 32);
00092 glCallLists((GLsizei)strlen(text), GL_UNSIGNED_BYTE, text);
00093 glPopAttrib();
00094 glPopMatrix();
00095 return ret;
00096 }
00097