📄 scene.cpp
字号:
//////////////////////////////////////////////////////////////////////
// scene.cpp: implementation of the scene class.
//
//////////////////////////////////////////////////////////////////////
#include "scene.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
scene::scene()
{
int i;
//////////////////////////////////////
// smerniky na instancie na triedy nastavim na NULL, aby som ich potom nemazal
font0 = NULL;
c = NULL;
_6kriz = NULL;
//////////////////////////////////////
// textury
for(i=0;i<pocet_textur;i++)tex[i]=0;
//////////////////////////////////////
// prepinace
svetlo=1; texturovanie=1; ciary=0;
fps = 200; // v pripade ze nieco zavisy od fps
motion_fps=25.f;
//////////////////////////////////////
// nacitanie textur
i=0;
// if( !LoadTexture("earth.jpg", &zem) ) {error = 1;return;}
for(i=0;i<pocet_textur;i++)
{
glGenTextures(1, &tex[i]);
}
{
unsigned char p[3]={0.f};
glBindTexture(GL_TEXTURE_2D, tex[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP ); // nastavuje za textury sa v smere u (vodorovnom) neopakuju
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP ); // nastavuje za textury sa v smere v (zvislom) neopakuju
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, 1, 1, 0, GL_RGB, GL_UNSIGNED_BYTE, p);
}
//////////////////////////////////////
// vytvarame instancie pouzivanych tried
font0 = new Font("data/font.bmp",&error); // vytvorenie fontu
c = new Camera;
_6kriz = new dxf("data/6kriz.dxf");
if(error)return;
InitGL(); // nastavenie z-buffra,svetla,...
//ShowCursor(0);
}
scene::~scene()
{
int i;
//////////////////////////////////////
// mazeme instancie tried
if(font0!=NULL)delete font0;
if(c!=NULL)delete c;
if(_6kriz!=NULL)delete _6kriz;
//////////////////////////////////////
// mazeme textury
for(i=0;i<pocet_textur;i++)glDeleteTextures( 1, &tex[i]);
// glDeleteTextures( 1, &zem);
KillGL();
ShowCursor(1);
}
void scene::InitGL(void)
{
if(!fullscreen)
{
RECT WindowRect; // miesto pre velkost okna
WindowRect.left=(long)0;
WindowRect.top=(long)0;
GetClientRect(hWnd,&WindowRect); //zistenie rozmerov uzivatelskej casti okna
ReSizeGLScene(WindowRect.right,WindowRect.bottom); //nastavenie perspektivy
}
else ReSizeGLScene(screen_x, screen_y); //definovana v tomto subore
glEnable(GL_TEXTURE_2D); // Povolenie zobrazovanie text鷕
glShadeModel(GL_SMOOTH); /*nastavuje tienovanie
GL_SMOOTH - objekty su tienovane t.j. prechody medzi farbami bodov su plinule (gouradovo (s)tienovanie)
GL_FLAT - objekty nie su tienovane ziadne plinule prechody */
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //specifikuje hodnoty na cistenie pomocou glClear par.: red, green, blue, alpha (cierny podklad)
glClearDepth(1.0f); //specifikuje hodnoty na cistenie pomocou glClear par.: depth (hlbka)
/* ZAPNUTIE HLBKOVEHO TESTU */
glEnable(GL_DEPTH_TEST); // zapne h錬kov
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -