version 1.13 | | version 1.14 |
---|
| | |
| | |
extern int gr_renderstats; | | extern int gr_renderstats; |
extern int gr_badtexture; | | extern int gr_badtexture; |
int ogl_alttexmerge=0;//merge textures by just printing the seperate textures? | | int ogl_alttexmerge=1;//merge textures by just printing the seperate textures? |
int ogl_16bittextures=0; | | int ogl_16bittextures=0; |
| | |
//int lastbound=-1; | | /*int lastbound=-1; |
| | |
//#define OGL_BINDTEXTURE(a) if(gr_badtexture>0) glBindTexture(GL_TEXTURE_2D, 0);\ | | #define OGL_BINDTEXTURE(a) if(gr_badtexture>0) glBindTexture(GL_TEXTURE_2D, 0);\ |
// else if(a!=lastbound) {glBindTexture(GL_TEXTURE_2D, a);lastbound=a;} | | else if(a!=lastbound) {glBindTexture(GL_TEXTURE_2D, a);lastbound=a;}*/ |
#define OGL_BINDTEXTURE(a) if(gr_badtexture>0) glBindTexture(GL_TEXTURE_2D, 0);\ | | #define OGL_BINDTEXTURE(a) if(gr_badtexture>0) glBindTexture(GL_TEXTURE_2D, 0);\ |
else glBindTexture(GL_TEXTURE_2D, a); | | else glBindTexture(GL_TEXTURE_2D, a); |
| | |
| | |
v2=(bm->bm_h+bm->bm_y)/(float)bm->gltexture->th; | | v2=(bm->bm_h+bm->bm_y)/(float)bm->gltexture->th; |
} | | } |
| | |
// u1=bm->bm_x/(float)bm->gltexture->tw; | | |
// u2=(bm->bm_w+bm->bm_x)/(float)bm->gltexture->tw; | | |
// v1=bm->bm_y/(float)bm->gltexture->th; | | |
// v2=(bm->bm_h+bm->bm_y)/(float)bm->gltexture->th; | | |
| | |
| | |
glBegin(GL_QUADS); | | glBegin(GL_QUADS); |
if (c<0) | | if (c<0) |
glColor3f(1.0,1.0,1.0); | | glColor3f(1.0,1.0,1.0); |
| | |
} | | } |
unsigned char decodebuf[512*512]; | | unsigned char decodebuf[512*512]; |
void ogl_loadbmtexture_m(grs_bitmap *bm,int domipmap){ | | void ogl_loadbmtexture_m(grs_bitmap *bm,int domipmap){ |
unsigned char *buf=bm->bm_data; | | unsigned char *buf; |
| | while (bm->bm_parent) |
| | bm=bm->bm_parent; |
| | buf=bm->bm_data; |
if (bm->gltexture==NULL){ | | if (bm->gltexture==NULL){ |
ogl_init_texture(bm->gltexture=ogl_get_free_texture()); | | ogl_init_texture(bm->gltexture=ogl_get_free_texture()); |
| | bm->gltexture->w=bm->bm_w; |
| | bm->gltexture->h=bm->bm_h; |
} | | } |
else if (bm->gltexture->handle>0) | | else { |
| | if (bm->gltexture->handle>0) |
return; | | return; |
| | if (bm->gltexture->w==0){ |
bm->gltexture->w=bm->bm_w; | | bm->gltexture->w=bm->bm_w; |
bm->gltexture->h=bm->bm_h; | | bm->gltexture->h=bm->bm_h; |
| | } |
| | } |
if (bm->bm_flags & BM_FLAG_RLE){ | | if (bm->bm_flags & BM_FLAG_RLE){ |
unsigned char * dbits; | | unsigned char * dbits; |
unsigned char * sbits; | | unsigned char * sbits; |
| | |
ogl_loadbmtexture_m(bm,1); | | ogl_loadbmtexture_m(bm,1); |
} | | } |
void ogl_freetexture(ogl_texture *gltexture){ | | void ogl_freetexture(ogl_texture *gltexture){ |
if (gltexture->handle>=0){ | | if (gltexture->handle>0){ |
r_texcount--; | | r_texcount--; |
mprintf((0,"ogl_freetexture(%p):%i (last rend %is) (%i left)\n",gltexture,gltexture->handle,(GameTime-gltexture->lastrend)/f1_0,r_texcount)); | | mprintf((0,"ogl_freetexture(%p):%i (last rend %is) (%i left)\n",gltexture,gltexture->handle,(GameTime-gltexture->lastrend)/f1_0,r_texcount)); |
glDeleteTextures( 1, &gltexture->handle ); | | glDeleteTextures( 1, &gltexture->handle ); |