⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scene.cpp

📁 motion_blur using opengl
💻 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 + -