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 */ }
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 }
// // 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; }
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; }
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 }
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); }