Difference for arch/ogl/gr.c from version 1.14 to 1.15


version 1.14 version 1.15
Line 6
 
Line 6
 #ifdef __WINDOWS__  #ifdef __WINDOWS__
 #include <windows.h>  #include <windows.h>
 #endif  #endif
 #include <GL/gl.h>  
 #include <GL/glu.h>  //#include <GL/gl.h>
 #include <unistd.h>  #include <unistd.h>
 #include <sys/types.h>  #include <sys/types.h>
 #include <sys/stat.h>  #include <sys/stat.h>
Line 31
 
Line 31
 #include "mono.h"  #include "mono.h"
 #include "args.h"  #include "args.h"
 #include "key.h"  #include "key.h"
   
   #include "gamefont.h"
   
   #define DECLARE_VARS
 #include "ogl_init.h"  #include "ogl_init.h"
   #include <GL/glu.h>
   
   int ogl_voodoohack=0;
   
 int gr_installed = 0;  int gr_installed = 0;
   
Line 54
 
Line 61
  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
 }  }
   
 void ogl_swap_buffers(void){  
  ogl_do_palfx();  
  ogl_swap_buffers_internal();  
  glClear(GL_COLOR_BUFFER_BIT);  
 }  
 int last_screen_mode=-1;  int last_screen_mode=-1;
 void ogl_set_screen_mode(void){  void ogl_set_screen_mode(void){
  if (last_screen_mode==Screen_mode)   if (last_screen_mode==Screen_mode)
Line 151
 
Line 153
  gr_set_current_canvas(NULL);   gr_set_current_canvas(NULL);
  //gr_enable_default_palette_loading();   //gr_enable_default_palette_loading();
   
    OGL_VIEWPORT(0,0,w,h);
   
  ogl_set_screen_mode();   ogl_set_screen_mode();
   
    gamefont_choose_game_font(w,h);
   
  return 0;   return 0;
 }  }
   
Line 183
 
Line 189
  Error("unknown texture filter %x\n",i);   Error("unknown texture filter %x\n",i);
 // return -1;  // return -1;
 }  }
   #ifdef OGL_RUNTIME_LOAD
   #ifdef __WINDOWS__
   char *OglLibPath="opengl32.dll";
   #endif
   #ifdef __LINUX__
   char *OglLibPath="libGL.so";
   #endif
   
   int ogl_rt_loaded=0;
   int ogl_init_load_library(void)
   {
    int retcode=-1;
    if (!ogl_rt_loaded){
    int t;
    if ((t=FindArg("-gl_library")))
    OglLibPath=Args[t+1];
   
    retcode = OpenGL_LoadLibrary(true);
    if(retcode)
    {
    mprintf((0,"Opengl loaded ok\n"));
   
    if(!glEnd)
    {
    Error("Opengl: Functions not imported\n");
    }
    }else{
    Error("Opengl: error loading %s\n",OglLibPath);
    }
    ogl_rt_loaded=1;
    }
    return retcode;
   }
   #endif
   
 int gr_init(int mode)  int gr_init(int mode)
 {  {
  int retcode,t,glt=0;   int retcode,t,glt=0;
  // Only do this function once!   // Only do this function once!
  if (gr_installed==1)   if (gr_installed==1)
  return -1;   return -1;
   
    if (FindArg("-gl_voodoo"))
    ogl_voodoohack=1;
   
   #ifdef OGL_RUNTIME_LOAD
    ogl_init_load_library();
   #endif
   
 #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 ((glt=FindArg("-gl_alttexmerge")))
    ogl_alttexmerge=1;
    if ((t=FindArg("-gl_oldtexmerge")))
    if (t>=glt)//allow overriding of earlier args
    ogl_alttexmerge=0;
   
    if ((glt=FindArg("-gl_16bittextures")))
    ogl_16bittextures=1;
   
  if ((glt=FindArg("-gl_mipmap"))){   if ((glt=FindArg("-gl_mipmap"))){
  GL_texmagfilt=GL_LINEAR;   GL_texmagfilt=GL_LINEAR;
  GL_texminfilt=GL_LINEAR_MIPMAP_NEAREST;   GL_texminfilt=GL_LINEAR_MIPMAP_NEAREST;
Line 215
 
Line 273
  GL_needmipmaps=ogl_testneedmipmaps(GL_texminfilt);   GL_needmipmaps=ogl_testneedmipmaps(GL_texminfilt);
  mprintf((0,"gr_init: texmagfilt:%x texminfilt:%x needmipmaps=%i\n",GL_texmagfilt,GL_texminfilt,GL_needmipmaps));   mprintf((0,"gr_init: texmagfilt:%x texminfilt:%x needmipmaps=%i\n",GL_texmagfilt,GL_texminfilt,GL_needmipmaps));
    
    if ((t=FindArg("-gl_vidmem"))){
    ogl_mem_target=atoi(Args[t+1])*1024*1024;
    }
    //printf("ogl_mem_target=%i\n",ogl_mem_target);
   
  ogl_init();//platform specific initialization   ogl_init();//platform specific initialization
   
    ogl_init_texture_list_internal();
   
  MALLOC( grd_curscreen,grs_screen,1 );   MALLOC( grd_curscreen,grs_screen,1 );
  memset( grd_curscreen, 0, sizeof(grs_screen));   memset( grd_curscreen, 0, sizeof(grs_screen));
  grd_curscreen->sc_canvas.cv_bitmap.bm_data = NULL;   grd_curscreen->sc_canvas.cv_bitmap.bm_data = NULL;
Line 242
 
Line 307
   
 void gr_close()  void gr_close()
 {  {
   // mprintf((0,"ogl init: %s %s %s - %s\n",glGetString(GL_VENDOR),glGetString(GL_RENDERER),glGetString(GL_VERSION),glGetString,(GL_EXTENSIONS)));
   
  if (grd_curscreen){   if (grd_curscreen){
  if (grd_curscreen->sc_canvas.cv_bitmap.bm_data)   if (grd_curscreen->sc_canvas.cv_bitmap.bm_data)
  free(grd_curscreen->sc_canvas.cv_bitmap.bm_data);   free(grd_curscreen->sc_canvas.cv_bitmap.bm_data);
  free(grd_curscreen);   free(grd_curscreen);
  }   }
  ogl_close();//platform specific code   ogl_close();//platform specific code
   #ifdef OGL_RUNTIME_LOAD
    if (ogl_rt_loaded)
    OpenGL_LoadLibrary(false);
   #endif
 }  }
 extern int r_upixelc;  extern int r_upixelc;
 void ogl_upixelc(int x, int y, int c){  void ogl_upixelc(int x, int y, int c){
Line 256
 
Line 327
 // if(Function_mode != FMODE_GAME){  // if(Function_mode != FMODE_GAME){
 // grd_curcanv->cv_bitmap.bm_data[y*grd_curscreen->sc_canvas.cv_bitmap.bm_w+x]=c;  // grd_curcanv->cv_bitmap.bm_data[y*grd_curscreen->sc_canvas.cv_bitmap.bm_w+x]=c;
 // }else{  // }else{
  OGL_DISABLE(GL_TEXTURE_2D);   OGL_DISABLE(TEXTURE_2D);
  glPointSize(1.0);   glPointSize(1.0);
  glBegin(GL_POINTS);   glBegin(GL_POINTS);
 // glBegin(GL_LINES);  // glBegin(GL_LINES);
Line 277
 
Line 348
  yo=1.0-(top+grd_curcanv->cv_bitmap.bm_y)/(float)last_height;   yo=1.0-(top+grd_curcanv->cv_bitmap.bm_y)/(float)last_height;
  yf=1.0-(bot+grd_curcanv->cv_bitmap.bm_y)/(float)last_height;   yf=1.0-(bot+grd_curcanv->cv_bitmap.bm_y)/(float)last_height;
    
  OGL_DISABLE(GL_TEXTURE_2D);   OGL_DISABLE(TEXTURE_2D);
  glColor3f(CPAL2Tr(c),CPAL2Tg(c),CPAL2Tb(c));   glColor3f(CPAL2Tr(c),CPAL2Tg(c),CPAL2Tb(c));
  glBegin(GL_QUADS);   glBegin(GL_QUADS);
  glVertex2f(xo,yo);   glVertex2f(xo,yo);
Line 294
 
Line 365
  yo=1.0-(top+grd_curcanv->cv_bitmap.bm_y)/(float)last_height;   yo=1.0-(top+grd_curcanv->cv_bitmap.bm_y)/(float)last_height;
  yf=1.0-(bot+grd_curcanv->cv_bitmap.bm_y)/(float)last_height;   yf=1.0-(bot+grd_curcanv->cv_bitmap.bm_y)/(float)last_height;
    
  OGL_DISABLE(GL_TEXTURE_2D);   OGL_DISABLE(TEXTURE_2D);
  glColor3f(CPAL2Tr(c),CPAL2Tg(c),CPAL2Tb(c));   glColor3f(CPAL2Tr(c),CPAL2Tg(c),CPAL2Tb(c));
  glBegin(GL_LINES);   glBegin(GL_LINES);
  glVertex2f(xo,yo);   glVertex2f(xo,yo);
Line 306
 
Line 377
 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);   OGL_DISABLE(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);*/
Line 412
 
Line 483
 //if we got really spiffy, we could optionally link in libpng or something, and use that.  //if we got really spiffy, we could optionally link in libpng or something, and use that.
 void write_bmp(char *savename,int w,int h,unsigned char *buf){  void write_bmp(char *savename,int w,int h,unsigned char *buf){
  int f;   int f;
   #ifdef __WINDOWS__
    f=open(savename,O_CREAT|O_EXCL|O_WRONLY,S_IRUSR|S_IWUSR);
   #else
  f=open(savename,O_CREAT|O_EXCL|O_WRONLY,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);   f=open(savename,O_CREAT|O_EXCL|O_WRONLY,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
   #endif
  if (f>=0){   if (f>=0){
  int r;   int r;
  int i=w*h*3;   int i=w*h*3;

Legend:
line(s) removed in v.1.14 
line(s) changed
 line(s) added in v.1.15