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); }
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 }
void World::show_textures(){ show_texture(cb_LOD_ID, 0,400,200,200); }
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; }