Beispiel #1
0
void WaterSurface::showTextures()
{
	show_texture(cb_refl_ID, 0,0,200,200);
	show_texture(db_refl_ID, 200,0,200,200);
	show_texture(cb_refr_ID, 400,0,200,200);
	show_texture(db_refr_ID, 600,0,200,200);
}
Beispiel #2
0
void GodRays::end()
{
	// kreslit zas do standardniho zadniho bufferu
	
	glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
	glDrawBuffer(GL_BACK);
	// viewport zpátky
	glViewport(0,0,g_WinWidth, g_WinHeight);
	v4 lposScreen = glCoordToScreenSpace(v4(	light->positionFixedToSkybox.x, 
												light->positionFixedToSkybox.y,
												light->positionFixedToSkybox.z,
												1.0)
										);
	//printf("x=%f, y=%f \n", lposScreen.x, lposScreen.y);
	
	// blend textures and draw them
	glMatrixMode(GL_PROJECTION);
	glPushMatrix();
	glLoadIdentity();
	glOrtho(0, g_WinWidth, 0, g_WinHeight, -1,1);

	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();
	glLoadIdentity();
	glTranslatef(0.0, -.1, 0.0), 
	glDisable(GL_LIGHTING);
	glDisable(GL_DEPTH_TEST);
	glEnable(GL_TEXTURE_2D);
	glActiveTexture(GL_TEXTURE0);
	glBindTexture(GL_TEXTURE_2D, originalColor);
	glActiveTexture(GL_TEXTURE1);
	glBindTexture(GL_TEXTURE_2D, forRaysColor);
	glColor4f(1.f,1.f,1.f,1.f);
	shader->use(true);
	shader->setUniform1i(originalColorLocation, 0);
 	shader->setUniform1i(forRaysColorLocation, 1);
	
	shader->setUniform2f(lightPosLocation, lposScreen.x,lposScreen.y );
	shader->setUniform1f(lightDOTviewLocation, lightDirDOTviewDirValue);
	glBegin(GL_QUADS);
		glTexCoord2f(0.f, 0.f); glVertex2i(0,0);
		glTexCoord2f(1.f, 0.f); glVertex2i(0+g_WinWidth,0);
		glTexCoord2f(1.f, 1.f); glVertex2i(0+g_WinWidth,0+g_WinHeight);
		glTexCoord2f(0.f, 1.f); glVertex2i(0,0+g_WinHeight);
	glEnd();

	shader->use(false);
	
	glEnable(GL_LIGHTING);
	glEnable(GL_DEPTH_TEST);
	glDisable(GL_TEXTURE_2D);

	glMatrixMode(GL_PROJECTION);
	glPopMatrix();
	glMatrixMode(GL_MODELVIEW);
	glPopMatrix();
	glActiveTexture(GL_TEXTURE0);


#if TEST
	// show godrays textures
	
	show_texture(originalColor, 400, 0, 200, 200);
	show_texture(originalDepth, 200, 0, 200, 200);
    show_texture(forRaysColor, 0, 0, 200, 200);
#endif	

	
	
}
Beispiel #3
0
void World::show_textures(){
	show_texture(cb_LOD_ID, 0,400,200,200);
}
Beispiel #4
0
int main(int argc, char *argv[])
{
   FILE *fp;
   int curritem = 0, numitems, i;
   unsigned short mask = 0xFFFF;
   char ch = '\0';
   int done = 0,
       wind = 0,          /* not as in air */
       mode = 0,
       refresh = 1;

   struct gfx_modes_struct { int w,h; } gfx_modes[NUM_MODES] =
      { {640, 480}, {800, 600}, {1024, 768} };


   if (argc != 0)
   {
      if ( (strchr(argv[1], '?') != NULL) ||
           (strchr(argv[1], 'h') != NULL) ||
           (strchr(argv[1], 'H') != NULL) )
      {
         fprintf(stderr, "usage: %s [gfx-mode-id]\n", argv[0]);
         fprintf(stderr, "gfx-mode-id is one of:\n");
         for (i=0; i<NUM_MODES; i++)
            fprintf(stderr, "  %i => %ix%ix16 %s\n",
                    i, gfx_modes[i].w, gfx_modes[i].h,
                    (i == 0) ? "(default)" : "");
         exit(-1);
      }

      mode = atoi(argv[1]);
      if ((mode < 0) || (mode >= NUM_MODES))
         mode = 0;
   }


   fp = flxx_open(BITMAP_NAME);
   if (fp == NULL)
      exit_err("error opening %s\n", BITMAP_NAME);
   numitems = flxx_numitems(fp);


   allegro_init();
   set_color_depth(16);
   if (set_gfx_mode(GFX_AUTODETECT, gfx_modes[mode].w, gfx_modes[mode].h,
       0, 0) < 0)
      exit_err("error initialising graphics:\n   %s\n", allegro_error);


   while (flxx_getitem(fp, curritem) <= 0)
   {
      curritem++;
      if (curritem > numitems)
         exit_err("no non-zero items found!!\n", "");
   }



   while (!done)
   {
      if (refresh)
      {
         clear(screen);
         show_texture(fp, curritem, mask, 0);
         textprintf(screen, font, 10, SCREEN_H - 20, 0xFFFF,
                    "img %i/%i | mask 0x%X", curritem, numitems-1, mask);
         refresh = 0;
      }

      ch = toupper(getch());
      switch (ch)
      {
         case 0x1B:  done = 1;
                     break;

         case 'V':   wind =  1;       break;
         case 'F':   wind = -1;       break;
         case 'C':   wind =  10;      break;
         case 'D':   wind = -10;      break;
         case 'X':   wind =  100;     break;
         case 'S':   wind = -100;     break;
         case 'Z':   wind =  1000;    break;
         case 'A':   wind = -1000;    break;

         case 0x0D:  clear(screen);
                     show_texture(fp, curritem, mask, 1);
                     textprintf(screen, font, 10, SCREEN_H - 20, 0xFFFF,
                                "dumped.");
                     break;

         case ' ':   mask ^= 0x8400;  /* flip b/w 0xffff and 0x7bff */
                     refresh = 1;
                     break;
      }

      if (wind != 0)
      {
         curritem += wind;

         if (curritem < 0)
            curritem += numitems;
         if (curritem >= numitems)
            curritem -= numitems;

         while (flxx_getitem(fp, curritem) <= 0)
         {
            if (wind < 0)
               curritem--;
            else
               curritem++;

            if (curritem < 0)
               curritem = numitems - 1;
            if (curritem >= numitems)
               curritem = 0;
         }

         wind = 0;
         refresh = 1;
      }

   }

   fclose(fp);

   return 0;
}