Difference for arch/ogl/gr.c from version 1.9 to 1.10


version 1.9 version 1.10
Line 16
 
Line 16
   
 #include "inferno.h"  #include "inferno.h"
   
   #include "strutil.h"
   #include "mono.h"
 #include "args.h"  #include "args.h"
 #include "ogl_init.h"  #include "ogl_init.h"
   
Line 43
 
Line 45
  gr_palette_step_up(0,0,0);//in case its left over from in game   gr_palette_step_up(0,0,0);//in case its left over from in game
 }  }
   
 float gr_fpal[768];  
 void gr_update()  void gr_update()
 {  {
  if (gl_initialized){   if (gl_initialized){
Line 55
 
Line 56
   
  ogl_init_state();   ogl_init_state();
  OGL_ENABLE(GL_TEXTURE_2D);   OGL_ENABLE(GL_TEXTURE_2D);
    OGL_TEXENV(GL_TEXTURE_ENV_MODE,GL_DECAL);
    OGL_TEXPARAM(GL_TEXTURE_MAG_FILTER,GL_NEAREST);
    OGL_TEXPARAM(GL_TEXTURE_MIN_FILTER,GL_NEAREST);
 // glEnable( GL_TEXTURE_2D );  // glEnable( GL_TEXTURE_2D );
   // glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL );
   // glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_NEAREST );
   // glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
    // if wrap is true, the texture wraps over at the edges (repeat)
    //       ... false, the texture ends at the edges (clamp)
   // glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,GL_CLAMP );
   // glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,GL_CLAMP );
    OGL_TEXCLAMP();
   
    glColor3f(1.0,1.0,1.0);
  for (i=0; i<grd_curscreen->sc_w/32; i++) {   for (i=0; i<grd_curscreen->sc_w/32; i++) {
  for (j=0; j<grd_curscreen->sc_h/32; j++) {   for (j=0; j<grd_curscreen->sc_h/32; j++) {
  int y,x,c,t;   int y,x,c,t;
Line 74
 
Line 88
   
  // select our current texture   // select our current texture
  glBindTexture( GL_TEXTURE_2D, kludgetexture );   glBindTexture( GL_TEXTURE_2D, kludgetexture );
  glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL );  
  glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_NEAREST );  
  glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );  
   
  // if wrap is true, the texture wraps over at the edges (repeat)  
  //       ... false, the texture ends at the edges (clamp)  
 // glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,GL_CLAMP );  
 // glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,GL_CLAMP );  
  OGL_TEXCLAMP();  
    
  glTexImage2D( GL_TEXTURE_2D, 0, 3, 32,   glTexImage2D( GL_TEXTURE_2D, 0, 3, 32,
  32, 0, GL_RGB, GL_UNSIGNED_BYTE, kludgetexturedata );   32, 0, GL_RGB, GL_UNSIGNED_BYTE, kludgetexturedata );
   
   
  glBegin( GL_QUADS );   glBegin( GL_QUADS );
  glColor3f(1.0,1.0,1.0);  
  glTexCoord2d(0.0,0.0); glVertex2f(kx*(float)i,ky*(float)j);   glTexCoord2d(0.0,0.0); glVertex2f(kx*(float)i,ky*(float)j);
  glTexCoord2d(1.0,0.0); glVertex2f(kx*(float)(i+1),ky*(float)j);   glTexCoord2d(1.0,0.0); glVertex2f(kx*(float)(i+1),ky*(float)j);
  glTexCoord2d(1.0,1.0); glVertex2f(kx*(float)(i+1),ky*(float)(j+1));   glTexCoord2d(1.0,1.0); glVertex2f(kx*(float)(i+1),ky*(float)(j+1));
Line 172
 
Line 176
  return 0;   return 0;
 }  }
   
   #define GLstrcmptestr(a,b) if (stricmp(a,#b)==0 || stricmp(a,"GL_" #b)==0)return GL_ ## b;
   int ogl_atotexfilti(char *a){
    GLstrcmptestr(a,NEAREST);
    GLstrcmptestr(a,LINEAR);
    GLstrcmptestr(a,NEAREST_MIPMAP_NEAREST);
    GLstrcmptestr(a,NEAREST_MIPMAP_LINEAR);
    GLstrcmptestr(a,LINEAR_MIPMAP_NEAREST);
    GLstrcmptestr(a,LINEAR_MIPMAP_LINEAR);
    return GL_NEAREST;
   }
   int ogl_testneedmipmaps(int i){
    switch (i){
    case GL_NEAREST:
    case GL_LINEAR:
    return 0;
    case GL_NEAREST_MIPMAP_NEAREST:
    case GL_NEAREST_MIPMAP_LINEAR:
    case GL_LINEAR_MIPMAP_NEAREST:
    case GL_LINEAR_MIPMAP_LINEAR:
    return 1;
    }
    return -1;
   }
 int gr_init(int mode)  int gr_init(int mode)
 {  {
  int retcode;   int retcode,t;
  // Only do this function once!   // Only do this function once!
  if (gr_installed==1)   if (gr_installed==1)
  return -1;   return -1;
       
 #ifdef GR_SUPPORTS_FULLSCREEN_TOGGLE  #ifdef GR_SUPPORTS_FULLSCREEN_TOGGLE
  if (FindArg("-fullscreen"))   if (FindArg("-fullscreen"))
  gr_toggle_fullscreen();   gr_toggle_fullscreen();
 #endif  #endif
     if ((t=FindArg("-gl_texmagfilt"))){
   // t=atoi(Args[t+1]);
    GL_texmagfilt=ogl_atotexfilti(Args[t+1]);
    }
    if ((t=FindArg("-gl_texminfilt"))){
    GL_texminfilt=ogl_atotexfilti(Args[t+1]);
    }
    GL_needmipmaps=(ogl_testneedmipmaps(GL_texminfilt) ||  ogl_testneedmipmaps(GL_texmagfilt));
    mprintf((0,"gr_init: texmagfilt:%x texminfilt:%x needmipmaps=%i\n",GL_texmagfilt,GL_texminfilt,GL_needmipmaps));
    
  ogl_init();//platform specific initialization   ogl_init();//platform specific initialization
   
Line 233
 
Line 265
  OGL_DISABLE(GL_TEXTURE_2D);   OGL_DISABLE(GL_TEXTURE_2D);
  glPointSize(1.0);   glPointSize(1.0);
  glBegin(GL_POINTS);   glBegin(GL_POINTS);
   // glBegin(GL_LINES);
  glColor3f(PAL2Tr(c),PAL2Tg(c),PAL2Tb(c));   glColor3f(PAL2Tr(c),PAL2Tg(c),PAL2Tb(c));
 // glColor3f((gr_palette[c*3]+gr_palette_gamma)/63.0,(gr_palette[c*3+1]+gr_palette_gamma)/63.0,(gr_palette[c*3+2]+gr_palette_gamma)/63.0);  
 // if (x<50) printf("%f,%f,%f\n",(gr_palette[c*3]+gr_palette_gamma)/63.0,(gr_palette[c*3+1]+gr_palette_gamma)/63.0,(gr_palette[c*3+2]+gr_palette_gamma)/63.0);  
  glVertex2f(x/(float)last_width,1.0-y/(float)last_height);   glVertex2f(x/(float)last_width,1.0-y/(float)last_height);
   // glVertex2f(x/((float)last_width+1),1.0-y/((float)last_height+1));
  glEnd();   glEnd();
  }   }
 }  }
   
 // Palette functions follow.  
 //////inline GLfloat PAL2Tr(int c) {return (gr_palette[c*3]+gr_palette_gamma)/63.0;}  
 //////inline GLfloat PAL2Tg(int c) {return (gr_palette[c*3+1]+gr_palette_gamma)/63.0;}  
 //////inline GLfloat PAL2Tb(int c) {return (gr_palette[c*3+2]+gr_palette_gamma)/63.0;}  
 ////inline GLfloat PAL2Tr(int c) {return (gr_current_pal[c*3]+gr_palette_gamma)/63.0;}  
 ////inline GLfloat PAL2Tg(int c) {return (gr_current_pal[c*3+1]+gr_palette_gamma)/63.0;}  
 ////inline GLfloat PAL2Tb(int c) {return (gr_current_pal[c*3+2]+gr_palette_gamma)/63.0;}  
 //inline GLfloat PAL2Tr(int c) {return (gr_current_pal[c*3]+gr_palette_gamma)/63.0;}  
 //inline GLfloat PAL2Tg(int c) {return (gr_current_pal[c*3+1]+gr_palette_gamma)/63.0;}  
 //inline GLfloat PAL2Tb(int c) {return (gr_current_pal[c*3+2]+gr_palette_gamma)/63.0;}  
   
 //static int last_r=0, last_g=0, last_b=0;  
 GLfloat last_r=0, last_g=0, last_b=0;  GLfloat last_r=0, last_g=0, last_b=0;
 int do_pal_step=0;  int do_pal_step=0;
 void ogl_do_palfx(void){  void ogl_do_palfx(void){
 // GLfloat r,g,b,a;  // GLfloat r,g,b,a;
    OGL_DISABLE(GL_TEXTURE_2D);
  if (gr_palette_faded_out){   if (gr_palette_faded_out){
 /* glEnable(GL_BLEND);  /* glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);*/   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);*/

Legend:
line(s) removed in v.1.9 
line(s) changed
 line(s) added in v.1.10