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

📄 drawglscene.cpp

📁 030_Particle_system using opengl
💻 CPP
字号:
//////////////////////////////////////////////////////////////////////
// scene.cpp: implementation of the scene class.
//
//////////////////////////////////////////////////////////////////////
#include "scene.h"
//////////////////////////////////////////////////////////////////////

// Tu je vsetko co sa kresli
void scene::DrawGLScene()
{
	vec4 lp[17];
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
	c->MoveWorld(1/timeframe, ROTATE_WALK|ROTATE_ABOUT_POINT);	// otoci svetom na zaklade vstupov od mysi a klavesnice
	c->SetTransform();
	if(keys['L'] && keys[VK_CONTROL]){ english = !english; keys['L']=0; }
	if(keys['P'])glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
	else	 glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);

	glEnable(GL_TEXTURE_2D);
//	glEnable(GL_LIGHTING);

	static int stage=3;

	if(keys['1'])stage=1;
	else if(keys['2'])stage=2;
	else if(keys['3'])stage=3;
	
	t_par.glBindTexture2D();
	//DrawQuad(vec(-0.5f,-0.5f,0),vec(0,0,1),vec(1,0,0),vec(0,1,0));
	if(!keys['C'])
	{
		par.Emit(timeframe);
		par.Update(timeframe);
	}

	glDisable(GL_DEPTH_TEST);
	glEnable(GL_BLEND);
	glBlendFunc(GL_ONE,GL_ONE);
	par.Render(c->vr, c->vu);
	glDisable(GL_BLEND);
	glEnable(GL_DEPTH_TEST);

	glDisable(GL_LIGHTING);
	glEnable(GL_TEXTURE_2D);
	glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
	glColor3f(1,1,1);

//	glTranslatef(0,1,0); Paint_axes();
/*	this->Print_vec( 0, 1, c->vp, "vp");
	this->Print_vec( 0, 2, c->vr, "vr");
	this->Print_vec( 0, 3, c->vu, "vu");
	this->Print_vec( 0, 4, c->vd, "vd");
*/
	glColor4f(1,1,1,1);
	
	// vypis FPS
	glEnable( GL_TEXTURE_2D);
	font0->Begin();
	timeframe = timer0.GetTime();
	timer0.Reset();

	fps_counter.GetAvgFps(timeframe,0.2f);
	gcvt( (double)fps_counter.avg_fps, 4, text);
	font0->Print( 0, 0, text, 0);

	if(keys[VK_F12]){	SaveScreen_BMP(); keys[VK_F12] = 0;}

	gcvt( (double)par.par.size(), 6, text);
	font0->Print( 0, 1, english?"count:":"pocet:", 0);
	font0->Print( 7, 1, text, 0);
	
	if(keys['H'])							// zobrazenie helpu
	{
		int i=3;
		glDisable(GL_TEXTURE_2D);
		glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
		glColor4f(0,0,0,0.4f);
		glLoadIdentity();
		glBegin(GL_QUADS);
			glVertex2i(40,210);
			glVertex2i(800-60,210);
			glVertex2i(800-60,600-48);
			glVertex2i(40,600-48);
		glEnd();
		glColor4f(1,1,1,1);
		glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_COLOR);
		glEnable(GL_TEXTURE_2D);

		font0->Print(10,i++,"Program: Particle system", 0);
		glColor3f(0.9f,0.9f,1.0f);
		if(english)
		{
			font0->Print(8,i++,"Programmer: Marek Mizanin - www.mizanin.szm.sk",0);
			glColor3f(1.0f,1.0f,1.0f);
			font0->Print(15,i++,"Controls:", 1);
			font0->Print(20,i++,"P - wire frame", 1);
			font0->Print(20,i++,"C - freeze particle", 1);
			font0->Print(20,i++,"V - don't show sprites", 1);
			font0->Print(20,i++,"B - don't show explosion rockets", 1);
			i++;
			font0->Print(20,i++,"F12 - take screenshot",1);
			font0->Print(20,i++,"F4 - toggle fullscreen", 1);
			font0->Print(20,i++,"H - help", 1);
			i++;
			font0->Print(2,i++,"Controls of camera:",0);
			font0->Print_scale(2,i++,"W,S,arrow up,down,left and right button - move forward and backward",1,0.94f,1);
			font0->Print(2,i++,"A,D,Delete,Insert - move left and right",1);
			font0->Print(2,i++,"Home,End - move up and down",1);
			font0->Print(2,i++,"arrow right,left and moving mouse <-> - rotation about y axis",1);
			font0->Print(2,i++,"Page Up, Page Down a moving mouse | - rotation about x axis",1);
			font0->Print(2,i++,"Shift - slow moving",1);
			font0->Print(2,i++,"R - reset camera",1);
		}
		else
		{
			font0->Print(8,i++,"Naprogramoval: Marek Mizanin - www.mizanin.szm.sk",0);
			glColor3f(1.0f,1.0f,1.0f);
			font0->Print(15,i++,"Pouzivane klavesy:", 1);
			font0->Print(20,i++,"P - zapne ciarovy rezim", 1);
			font0->Print(20,i++,"C - zastavy cestice", 1);
			font0->Print(20,i++,"V - nezobrazuje prudy", 1);
			font0->Print(20,i++,"B - nezobrazuje vybuchujuce rakety", 1);
			i++;
			font0->Print(20,i++,"F12 - ulozi obrazovku do subora",1);
			font0->Print(20,i++,"F4 - prepina do/z fullscreen", 1);
			font0->Print(20,i++,"H - help", 1);
			i++;
			font0->Print(4,i++,"Ovladanie kamery:",0);
			font0->Print_scale(4,i++,"W,S,sipka hore,dole,lave a prave tlacitko - pohyb dopredu a dozadu",1,0.94f,1);
			font0->Print(4,i++,"A,D,Delete,Insert - pohyb do boka vlavo vpravo",1);
			font0->Print(4,i++,"Home,End - pohyb hore, dole",1);
			font0->Print(4,i++,"sipka vpravo,vlavo a pohyb mysov <->  - rotacia okolo osi y",1);
			font0->Print(4,i++,"Page Up, Page Down a pohyb mysov | - rotacia okolo osi x",1);
			font0->Print(4,i++,"Shift - pomalsi pohyb",1);
			font0->Print(4,i++,"R - reset kamery",1);
		}
	}
	font0->End();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -