00001 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 #include "K3dOpenGL.h"
00035 
00039 K3dOpenGL::K3dOpenGL(K3dGameData *_pGameData)
00040 {
00041         m_pGameData = _pGameData;
00042         
00043         m_pGameData->SetOpenGL(this);
00044 }
00045 
00046 K3dOpenGL::~K3dOpenGL()
00047 {
00048 }
00049 
00051 void K3dOpenGL::Set2DProjection()
00052 {
00053         glMatrixMode(GL_PROJECTION);
00054         glLoadIdentity();
00055         glOrtho(0,m_pGameData->GetGraphicOption()->iWidth,0,m_pGameData->GetGraphicOption()->iHeight,-1,1);
00056         glMatrixMode(GL_MODELVIEW);
00057         glLoadIdentity(); 
00058 }
00059 
00061 void K3dOpenGL::Set3DProjection()
00062 {
00063         glMatrixMode(GL_PROJECTION);
00064         glLoadIdentity();
00065 
00066         gluPerspective((GLdouble)m_pGameData->GetGraphicOption()->iFovy, (GLdouble)m_pGameData->GetGraphicOption()->iWidth/(GLdouble)m_pGameData->GetGraphicOption()->iHeight,
00067                 (GLdouble)m_pGameData->GetGraphicOption()->iNearPlane, (GLdouble)m_pGameData->GetGraphicOption()->iFarPlane);
00068 
00069         glMatrixMode(GL_MODELVIEW);
00070         glLoadIdentity();
00071 }
00072 
00076 void K3dOpenGL::ResizeGL(const int _iWidth, int _iHeight)
00077 {
00078         if(_iHeight == 0)
00079                 _iHeight = 1;
00080 
00081         glViewport(0, 0, _iWidth, _iHeight);
00082 
00083         
00084         TGraphicOption *ptGraphics = m_pGameData->GetGraphicOption();
00085         ptGraphics->iWidth = _iWidth;
00086         ptGraphics->iHeight = _iHeight;
00087 
00088         Set3DProjection();
00089         
00090 }
00091