📄 scene.cpp
字号:
//////////////////////////////////////////////////////////////////////
// scene.cpp: implementation of the scene class.
//
//////////////////////////////////////////////////////////////////////
#include "scene.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
scene::scene()
{
if(!extInit()){ error=1; return;}
font0 = NULL;
ReadInit("data/init.txt");
//////////////////////////////////////
// smerniky na instancie na triedy nastavim na NULL, aby som ich potom nemazal
c = NULL;
//zistime podporu cube mapping
if(!ext.ARB_multitexture)
{ MessageBox(hWnd,english ? "GL_ARB_multitexture unsupported !":"GL_ARB_multitexture nepodporovany !", "ERROR", MB_OK); error=1;return;}
if(!(ext.max.max_texture_units>2))
{ MessageBox(hWnd,english ? "Require 3 texture units!" : "Pozadovane su 3 jednotky pre multitexturing!", "ERROR", MB_OK); error=1;return;}
if(!ext.ARB_texture_env_combine)
{ MessageBox(hWnd,english ? "GL_ARB_texture_env_combine unsupported !":"GL_ARB_texture_env_combine nepodporovany !", "ERROR", MB_OK); error=1;return;}
if(!ext.ATI_envmap_bumpmap)
{ MessageBox(hWnd,english ? "GL_ATI_envmap_bumpmap unsupported !":"GL_ATI_envmap_bumpmap nepodporovany !", "ERROR", MB_OK); error=1;return;}
font0 = new Font("data/font.bmp",&error); // vytvorenie fontu
if(error)return;
//////////////////////////////////////
// prepinace
fps = 200; // v pripade ze nieco zavisy od fps
clip_distance = vzdialena_orezavacia_rovina;
svetlo=0; texturovanie=0; ciary=0; kurzor=1;
//////////////////////////////////////
// nacitanie textur
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //cisti buffer v aktualnom viewporte a to iba color a hlbkovy bit
glEnable(GL_TEXTURE_2D);
font0->Begin();
font0->Print_xy_scale(100,400,"Environment mapped bump mapping (EMBM)",0,1.5f,2);
font0->Print_xy_scale(300,320,"Marek Mizanin",0,1.5f,1.5f);
font0->Print_xy_scale(260,280,"www.mizanin.szm.sk",0,1.5f,1.5f);
font0->Print_xy_scale(english ? 340:300,240,english ? "Key H - help" : "Klavesa H - Help",0,1.0f,1.0f);
font0->End();
SwapBuffers(hDC);
spheremap.setForCopyToTexture( renderableTexture, renderableTexture, 0, filterForCubeMap);
zem.load("data/base.jpg",0,3,0);
dudv.MakeDOT3( "data/bump.jpg", 1, 1, 0, 1.0f, NULL); //"data/dudv.bmp");
// dudv.loadDUDV( "data/dudv.bmp", 1, 1, 0);
// LoadTextureSkyBox("data/nvidia_skybox/","jpg", skybox);
// cubemap.loadCube("data/nvidia_skybox/","jpg",1);
LoadTextureSkyBox("data/opengl/","jpg", skybox);
cubemap.loadCube("data/opengl/","jpg",filterForCubeMap);
//////////////////////////////////////
// vytvarame instancie pouzivanych tried
c = new camera;
if(error)return;
InitGL(); // nastavenie z-buffra,svetla,...
}
scene::~scene()
{
// int i;
//////////////////////////////////////
// mazeme instancie tried
if(font0!=NULL)delete font0;
if(c!=NULL)delete c;
//////////////////////////////////////
KillGL();
}
void scene::InitGL(void)
{
if(!kurzor)ShowCursor(0);
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)
// glClearColor(0.6f, 0.6f, 0.6f, 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 + -