Exemplo n.º 1
0
void drawGLScene(void)											/* Draw The Scene */
{
	glClearColor(0.0f, 0.0f, 0.0f, 0.5);						/* Set The Clear Color To Black */
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);			/* Clear Screen And Depth Buffer */
	glLoadIdentity();											/* Reset The View */
	RenderToTexture();											/* Render To A Texture */
	ProcessHelix();												/* Draw Our Helix */
	DrawBlur(25,0.02f);											/* Draw The Blur Effect */
	glFlush();													/* Flush The GL Rendering Pipeline */
}
Exemplo n.º 2
0
void Draw (void)												// Draw The Scene
{
	glClearColor(0.0f, 0.0f, 0.0f, 0.5);						// Set The Clear Color To Black
	glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		// Clear Screen And Depth Buffer
	glLoadIdentity();											// Reset The View	
	RenderToTexture();											// Render To A Texture
	ProcessHelix();												// Draw Our Helix
	DrawBlur(25,0.02f);											// Draw The Blur Effect
	glFlush ();													// Flush The GL Rendering Pipeline
}
Exemplo n.º 3
0
//
// Idle processing: ovvero cosa fare quando non hai nient'altro
// da fare
//
long AboutWindow::onIdle(FXObject* , FXSelector, void* )
{
  IdleHandle = NULL;

  int w = OGLCanvas->getWidth();
	int h = OGLCanvas->getHeight();

	if (!GLInitialized)
	{
		if(onOGLConfigure(NULL, 0, NULL))
			GLInitialized = true;
		else
			return 0;
	}

	if (!OGLCanvas->makeCurrent())
		return 0;	
	
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  
  if (delta > 3100.0f)
  {
    startTime = getTime();
    ++nShow;                                                                                                                                                    
    if (nShow > 3) nShow = 0;                                                                                                                                         if (nShow == 3 && hehe) nShow = 99;
  }
  delta = ((getTime() - startTime) / 4.0f);
  ViewPerspective(w, h);

  glEnable(GL_TEXTURE_2D);
	glDisable(GL_DEPTH_TEST);


  glColor3f(1.0f, 1.0f, 1.0f);
  RenderToTexture(w, h);	
  DrawBlur(10, 0.03f, w, h);
  
  glColor3ub(255, 240, 32);
  glEnable(GL_TEXTURE_2D);
  DrawWorld();

  
  glFlush();
	OGLCanvas->swapBuffers();
	OGLCanvas->makeNonCurrent();

  IdleHandle = getApp()->addChore(this, ID_IDLE);
	return 1;
}
Exemplo n.º 4
0
GLvoid NEHE36::DrawGLScene(){
	
    glClearColor(0.0f, 0.0f, 0.0f, 0.5);
	glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();
	RenderToTexture();
	ProcessHelix();
	DrawBlur(25,0.02f);
	
	
	//draw FPS text
	GLint matrixMode;
	GLboolean lightingOn;
	lightingOn= glIsEnabled(GL_LIGHTING);
	if (lightingOn) glDisable(GL_LIGHTING);
	glGetIntegerv(GL_MATRIX_MODE, &matrixMode);
	glDisable(GL_TEXTURE_2D);
	glDisable(GL_DEPTH_TEST);
	glMatrixMode(GL_PROJECTION);
	glPushMatrix();
	glLoadIdentity();
	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();
	glLoadIdentity();
	glPushAttrib(GL_COLOR_BUFFER_BIT);
	
	glTranslatef(0.0f,0.0f,-1.0f);
	glColor3f(0.8f,0.8f,0.8f);
	computeFPS();
	Utils::drawText(-0.98f,-0.98f, GLUT_BITMAP_HELVETICA_12, FPSstr);
	
	glPopAttrib();
	glPopMatrix();
	glMatrixMode(GL_PROJECTION);
	glPopMatrix();
	glMatrixMode(matrixMode);
	if (lightingOn) glEnable(GL_LIGHTING);
	glEnable(GL_TEXTURE_2D);
	glEnable(GL_DEPTH_TEST);
	
	glutSwapBuffers();
	
	angle += 0.5f;
	
}
Exemplo n.º 5
0
extern "C" void Draw (void)												// Draw The Scene
{
  static double ticks;
  static double lastticks;

  glEnable(GL_DEPTH_TEST);									// Enable Depth Testing

  GLfloat global_ambient[4]={0.2f, 0.2f,  0.2f, 1.0f};		// Set Ambient Lighting To Fairly Dark Light (No Color)
  GLfloat light0pos[4]=     {0.0f, 5.0f, 10.0f, 1.0f};		// Set The Light Position
  GLfloat light0ambient[4]= {0.2f, 0.2f,  0.2f, 1.0f};		// More Ambient Light
  GLfloat light0diffuse[4]= {0.3f, 0.3f,  0.3f, 1.0f};		// Set The Diffuse Light A Bit Brighter
  GLfloat light0specular[4]={0.8f, 0.8f,  0.8f, 1.0f};		// Fairly Bright Specular Lighting

  GLfloat lmodel_ambient[]= {0.2f,0.2f,0.2f,1.0f};			// And More Ambient Light
  glLightModelfv(GL_LIGHT_MODEL_AMBIENT,lmodel_ambient);		// Set The Ambient Light Model

  glLightModelfv(GL_LIGHT_MODEL_AMBIENT, global_ambient);		// Set The Global Ambient Light Model
  glLightfv(GL_LIGHT0, GL_POSITION, light0pos);				// Set The Lights Position
  glLightfv(GL_LIGHT0, GL_AMBIENT, light0ambient);			// Set The Ambient Light
  glLightfv(GL_LIGHT0, GL_DIFFUSE, light0diffuse);			// Set The Diffuse Light
  glLightfv(GL_LIGHT0, GL_SPECULAR, light0specular);			// Set Up Specular Lighting
  glEnable(GL_LIGHTING);										// Enable Lighting
  glEnable(GL_LIGHT0);										// Enable Light0

  glShadeModel(GL_SMOOTH);									// Select Smooth Shading

  glMateriali(GL_FRONT, GL_SHININESS, 128);
  glClearColor(0.0f, 0.0f, 0.0f, 0.5);						// Set The Clear Color To Black


  ticks=SDL_GetTicks();
  if(Update (ticks - lastticks)) 
    return;
  lastticks = ticks;

  glClearColor(0.0f, 0.0f, 0.0f, 0.5);						// Set The Clear Color To Black
  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);		// Clear Screen And Depth Buffer
  glLoadIdentity();											// Reset The View
  RenderToTexture();											// Render To A Texture
  ProcessHelix();												// Draw Our Helix
  DrawBlur(25,0.02f);											// Draw The Blur Effect
}
Exemplo n.º 6
0
int drawGLscene()
{
	while(resetpso) SDL_Delay(10);

	int i,j,k; float alpha; unsigned char clear;
	int sloop = 0;	float ratio;
	for(sloop = 0; sloop < 2; sloop++)
{
	if(blurenable)	glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo[0]);
	else if(stereo)
	{
		
		if(sloop == 0) glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo[1]);
		if(sloop == 1) glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo[2]);
	}
	if(!blurenable && !stereo) glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);

	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);



if(stereo) 
{
//		ratio = (GLfloat)w_width/(2*(GLfloat)w_height);
//		gluPerspective(45.0f, ratio, 0.1f, 800.0f);
ratio = w_width/3;
glViewport(-ratio,0,overtexs+ratio*2,overtexs); 
}

	glMatrixMode(GL_MODELVIEW);
	glDisable(GL_DEPTH_TEST);
 	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA);
//	glBlendFunc(GL_SRC_ALPHA,GL_ONE);
	//	GL_ACCUM_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
	glLoadIdentity();

//	if(stereo && sloop == 0) { glTranslatef(0, 0, 0); }
//	if(stereo && sloop == 1) { glTranslatef(0, 0, 0); }
	glBindTexture(GL_TEXTURE_2D, 0);

//	while(lock);
//	lock = 1;
//	rrotxz = rrotyz = rrotxy = rrotwx = rrotwy = rrotwz = 0;

//	lock = 0;
	if(azoom)
	{
		if(zoom > 3 || zoom < -3) azoom = -azoom;
		zoom += azoom;
	}

	playerpos.set(posx, posy, posz, posw);

	glDisable(GL_FOG);

	glFogfv(GL_FOG_COLOR, fogcolor);
	glFogi(GL_FOG_MODE, GL_LINEAR);
	glFogf(GL_FOG_DENSITY, 500);
	glFogf(GL_FOG_START, (1+((zoom*10)))*sqrt(sqrt(depth/20)));
	glFogf(GL_FOG_END, (5+((zoom*10)))*sqrt(sqrt(depth/20)));
	glTranslatef(0, 0, -10*zoom);

	if(points) 
	{
		if(!intensswitch)
		{
			intensval += 0.025f*intensui;
			if(intensval > 1.1f) intensval = -0.1f;
		}
//		list1 = glGenLists (1);
//		glNewList(list1, GL_COMPILE);
		if(stereo && sloop == 0) drawdl('l', intensval);
		if(stereo && sloop == 1) drawdl('r', intensval);
		else drawdl('c', intensval);
//		glEndList();
//		glCallList(list1);
if(ddebug) printf("draw finish %d\n", quatnum);
	}
	else
	{
		if(stereo) posbuf_run(sloop);
		else posbuf_run(10);

		for(j = (quatnum/4)-1; j >= 0; j--)
		{
			i = 4*zposbufi[j];
			if(enablemov) if(i >= movquat) continue;	

			color(2, 1);
			if(zposbufi[j] >= movquat/4) 
				glBindTexture(GL_TEXTURE_2D, texture[2]);
			if(zposbufi[j] >= 0) 
//		else if(zposbufi[j] >= freequat/4) 
				glBindTexture(GL_TEXTURE_2D, texture[1]);
			else if(zposbufi[j] >= bquat/4) 
				glBindTexture(GL_TEXTURE_2D, texture[2]);
			else if(zposbufi[j] >= 0) 
				glBindTexture(GL_TEXTURE_2D, texture[2]);
			else 	glBindTexture(GL_TEXTURE_2D, texture[2]);

			color(((48+i)/48), 0.2f);
			if(zposbufi[j] >= 0) color(((48+i)/48), 0.2f);
			else if(stereo && sloop == 0) quad_draw_l(q, i);
			else if(stereo && sloop == 1) quad_draw_r(q, i);
			//else quad_draw_new(q, i);
			else quad_draw(q, i);
		}
	}
	qbuffer[0].set(padd.a+playerpos.a-1, padd.b+playerpos.b, 
			padd.c+playerpos.c, padd.d+playerpos.d);
	qbuffer[1].set(padd.a+playerpos.a+1, padd.b+playerpos.b, 
			padd.c+playerpos.c, padd.d+playerpos.d);
	qbuffer[2].set(playerpos.a+1, playerpos.b+0.05, 
			playerpos.c, playerpos.d);
	qbuffer[3].set(playerpos.a-1, playerpos.b+0.05, 
			playerpos.c, playerpos.d);

	qbuffer[4].set(padd.a+playerpos.a, padd.b+playerpos.b-1, 
			padd.c+playerpos.c, padd.d+playerpos.d);
	qbuffer[5].set(padd.a+playerpos.a, padd.b+playerpos.b+1, 
			padd.c+playerpos.c, padd.d+playerpos.d);
	qbuffer[6].set(playerpos.a+0.05, playerpos.b+1, 
			playerpos.c, playerpos.d);
	qbuffer[7].set(playerpos.a+0.05, playerpos.b-1, 
			playerpos.c, playerpos.d);


	color(3, 1);
	glBindTexture(GL_TEXTURE_2D, texture[3]);
	for(i = 0; i < 8; i++)
		quat_rotate(qbuffer, i);
//	quad_draw(qbuffer, 0);
//	quad_draw(qbuffer, 4);

	if(blurenable) DrawBlur(10*blurr,0.001f);
}
	if(stereo) DrawStereo();

	SDL_GL_SwapBuffers();

	drawnonce = 1;
	return(0);
}