Minor code cleanup (memory allocation)
This commit is contained in:
@@ -49,7 +49,7 @@ extern unsigned char cvidmode;
|
|||||||
|
|
||||||
// OPENGL VARIABLES
|
// OPENGL VARIABLES
|
||||||
#ifdef __OPENGL__
|
#ifdef __OPENGL__
|
||||||
unsigned short glvidbuffer[512*512];
|
unsigned short *glvidbuffer = 0;
|
||||||
GLuint gltextures[3];
|
GLuint gltextures[3];
|
||||||
int gl_inited = 0;
|
int gl_inited = 0;
|
||||||
int gltexture256, gltexture512;
|
int gltexture256, gltexture512;
|
||||||
@@ -502,19 +502,20 @@ int startgame(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __OPENGL__
|
#ifdef __OPENGL__
|
||||||
if (gl_inited) {
|
|
||||||
/* this _SHOULD_ be safe even if they aren't generated:
|
|
||||||
"glDeleteTextures silently ignores 0's and names that do not correspond to existing textures."
|
|
||||||
However, nVidia's drivers are far less than perfect.
|
|
||||||
*/
|
|
||||||
glDeleteTextures(3, gltextures);
|
|
||||||
gl_inited = 0;
|
|
||||||
}
|
|
||||||
if (UseOpenGL) {
|
if (UseOpenGL) {
|
||||||
if (SurfaceY) glViewport(0,0, SurfaceX, SurfaceY);
|
if (SurfaceY) glViewport(0,0, SurfaceX, SurfaceY);
|
||||||
else glViewport(0,0, SurfaceX, 1);
|
else glViewport(0,0, SurfaceX, 1);
|
||||||
glGenTextures(3, gltextures);
|
if (!gl_inited) {
|
||||||
gl_inited = 1;
|
glGenTextures(3, gltextures);
|
||||||
|
glvidbuffer = malloc(512*512*2);
|
||||||
|
gl_inited = 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (gl_inited) {
|
||||||
|
glDeleteTextures(3, gltextures);
|
||||||
|
free(glvidbuffer);
|
||||||
|
gl_inited = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BitDepth = (UseOpenGL ? 16 : 0);
|
BitDepth = (UseOpenGL ? 16 : 0);
|
||||||
@@ -1003,15 +1004,16 @@ static void drawscreenwin_drawglblock(int hires, int start, int end)
|
|||||||
|
|
||||||
if (hires) {
|
if (hires) {
|
||||||
if (!gltexture512) {
|
if (!gltexture512) {
|
||||||
unsigned short *b288 = &((unsigned short*)vidbuffer)[16], *b576 = &((unsigned short*)vidbuffer)[75036*2 + 16];
|
unsigned short *vbuf1 = &((unsigned short*)vidbuffer)[16];
|
||||||
unsigned short *p = &glvidbuffer[0];
|
unsigned short *vbuf2 = &((unsigned short*)vidbuffer)[75036*2 + 16];
|
||||||
|
unsigned short *vbuf = &glvidbuffer[0];
|
||||||
|
|
||||||
for (j = 0; j < 224; j++) {
|
for (j = 0; j < 224; j++) {
|
||||||
for (i = 0; i < 256; i++) {
|
for (i = 0; i < 256; i++) {
|
||||||
*p++ = *b288++;
|
*vbuf++ = *vbuf1++;
|
||||||
*p++ = *b576++;
|
*vbuf++ = *vbuf2++;
|
||||||
}
|
}
|
||||||
b288 += 32; b576 += 32;
|
vbuf1 += 32; vbuf2 += 32; // skip the two 16-pixel-wide columns
|
||||||
}
|
}
|
||||||
|
|
||||||
glBindTexture(GL_TEXTURE_2D, gltextures[1]);
|
glBindTexture(GL_TEXTURE_2D, gltextures[1]);
|
||||||
|
|||||||
Reference in New Issue
Block a user