Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed issue 580 #582

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions src/draw.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ void drawImageRotatedAlpha( SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos, re
}

// draw a textured quad
glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
glColor4f(1, 1, 1, alpha / 255.1);
glBegin(GL_QUADS);
glTexCoord2f(1.0 * ((real_t)src->x / image->w), 1.0 * ((real_t)src->y / image->h));
Expand Down Expand Up @@ -492,7 +492,7 @@ void drawImageColor( SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos, Uint32 co
}

// draw a textured quad
glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
real_t r = ((Uint8)(color >> mainsurface->format->Rshift)) / 255.f;
real_t g = ((Uint8)(color >> mainsurface->format->Gshift)) / 255.f;
real_t b = ((Uint8)(color >> mainsurface->format->Bshift)) / 255.f;
Expand Down Expand Up @@ -546,7 +546,7 @@ void drawImageAlpha( SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos, Uint8 alp
}

// draw a textured quad
glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
glColor4f(1, 1, 1, alpha / 255.1);
glPushMatrix();
glBegin(GL_QUADS);
Expand Down Expand Up @@ -596,7 +596,7 @@ void drawImage( SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos )
}

// draw a textured quad
glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
glColor4f(1, 1, 1, 1);
glPushMatrix();
glBegin(GL_QUADS);
Expand Down Expand Up @@ -646,7 +646,7 @@ void drawImageRing(SDL_Surface* image, SDL_Rect* src, int radius, int thickness,
}

// draw a textured quad
glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
glColor4f(1, 1, 1, alpha / 255.f);
glPushMatrix();

Expand Down Expand Up @@ -771,7 +771,7 @@ void drawImageScaled( SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos )
}

// draw a textured quad
glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
glColor4f(1, 1, 1, 1);
glPushMatrix();
glBegin(GL_QUADS);
Expand Down Expand Up @@ -826,7 +826,7 @@ void drawImageScaledPartial(SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos, fl
}

// draw a textured quad
glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
glColor4f(1, 1, 1, 1);
glPushMatrix();
glBegin(GL_QUADS);
Expand Down Expand Up @@ -889,7 +889,7 @@ void drawImageScaledColor(SDL_Surface* image, SDL_Rect* src, SDL_Rect* pos, Uint
}

// draw a textured quad
glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
real_t r = ((Uint8)(color >> mainsurface->format->Rshift)) / 255.f;
real_t g = ((Uint8)(color >> mainsurface->format->Gshift)) / 255.f;
real_t b = ((Uint8)(color >> mainsurface->format->Bshift)) / 255.f;
Expand Down Expand Up @@ -985,7 +985,7 @@ void drawImageFancy( SDL_Surface* image, Uint32 color, real_t angle, SDL_Rect* s
}

// draw a textured quad
glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
real_t r = ((Uint8)(color >> mainsurface->format->Rshift)) / 255.f;
real_t g = ((Uint8)(color >> mainsurface->format->Gshift)) / 255.f;
real_t b = ((Uint8)(color >> mainsurface->format->Bshift)) / 255.f;
Expand Down Expand Up @@ -2186,7 +2186,7 @@ void drawWindowFancy(int x1, int y1, int x2, int y2)
glVertex2f(x2 - 1, yres - y1 - 1);
glEnd();
glColor3f(.75, .75, .75);
glBindTexture(GL_TEXTURE_2D, texid[fancyWindow_bmp->refcount]); // wood texture
glBindTexture(GL_TEXTURE_2D, texid[(long int)fancyWindow_bmp->userdata]); // wood texture
glBegin(GL_QUADS);
glTexCoord2f(0, 0);
glVertex2f(x1 + 2, yres - y1 - 2);
Expand Down Expand Up @@ -2322,7 +2322,7 @@ SDL_Rect ttfPrintTextColor( TTF_Font* font, int x, int y, Uint32 color, bool out
SDL_BlitSurface(textSurf, NULL, surf, &pos);
// load the text outline surface as a GL texture
allsurfaces[imgref] = surf;
allsurfaces[imgref]->refcount = imgref;
allsurfaces[imgref]->userdata = (void*) imgref;
glLoadTexture(allsurfaces[imgref], imgref);
imgref++;
// store the surface in the text surface cache
Expand Down
3 changes: 2 additions & 1 deletion src/files.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,7 @@ void glLoadTexture(SDL_Surface* image, int texnum)
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texid[texnum]);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_UNPACK_ROW_LENGTH, (image->pitch / 4));
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
Expand Down Expand Up @@ -591,7 +592,7 @@ SDL_Surface* loadImage(char const * const filename)

// load the new surface as a GL texture
allsurfaces[imgref] = newSurface;
allsurfaces[imgref]->refcount = imgref + 1;
allsurfaces[imgref]->userdata = (void *)(imgref);
glLoadTexture(allsurfaces[imgref], imgref);

// free the translated surface
Expand Down
26 changes: 13 additions & 13 deletions src/opengl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -500,7 +500,7 @@ void glDrawSprite(view_t* camera, Entity* entity, int mode)
}
if ( mode == REALCOLORS )
{
glBindTexture(GL_TEXTURE_2D, texid[sprite->refcount]);
glBindTexture(GL_TEXTURE_2D, texid[(long int)sprite->userdata]);
}
else
{
Expand Down Expand Up @@ -586,7 +586,7 @@ void glDrawSpriteFromImage(view_t* camera, Entity* entity, std::string text, int
//int x, y;
real_t s = 1;
SDL_Surface* image = sprites[0];
GLuint textureId = texid[sprites[0]->refcount];
GLuint textureId = texid[(long int)sprites[0]->userdata];
char textToRetrieve[128];

if ( text.compare("") == 0 )
Expand All @@ -603,7 +603,7 @@ void glDrawSpriteFromImage(view_t* camera, Entity* entity, std::string text, int
textToRetrieve[std::min(static_cast<int>(strlen(text.c_str())), 22)] = '\0';
if ( (image = ttfTextHashRetrieve(ttfTextHash, textToRetrieve, ttf12, true)) != NULL )
{
textureId = texid[image->refcount];
textureId = texid[(long int)image->userdata];
}
else
{
Expand All @@ -627,15 +627,15 @@ void glDrawSpriteFromImage(view_t* camera, Entity* entity, std::string text, int
SDL_BlitSurface(textSurf, NULL, image, &pos);
// load the text outline surface as a GL texture
allsurfaces[imgref] = image;
allsurfaces[imgref]->refcount = imgref;
allsurfaces[imgref]->userdata = (void *)((long int)imgref);
glLoadTexture(allsurfaces[imgref], imgref);
imgref++;
// store the surface in the text surface cache
if ( !ttfTextHashStore(ttfTextHash, textToRetrieve, ttf12, true, image) )
{
printlog("warning: failed to store text outline surface with imgref %d\n", imgref - 1);
}
textureId = texid[image->refcount];
textureId = texid[(long int)image->userdata];
}
// setup projection
glMatrixMode(GL_PROJECTION);
Expand Down Expand Up @@ -864,7 +864,7 @@ void glDrawWorld(view_t* camera, int mode)

// first (higher) sky layer
glColor4f(1.f, 1.f, 1.f, .5);
glBindTexture(GL_TEXTURE_2D, texid[tiles[cloudtile]->refcount]); // sky tile
glBindTexture(GL_TEXTURE_2D, texid[(long int)tiles[cloudtile]->userdata]); // sky tile
glBegin( GL_QUADS );
glTexCoord2f((real_t)(ticks % 60) / 60, (real_t)(ticks % 60) / 60);
glVertex3f(-CLIPFAR * 16, 64, -CLIPFAR * 16);
Expand All @@ -881,7 +881,7 @@ void glDrawWorld(view_t* camera, int mode)

// second (closer) sky layer
glColor4f(1.f, 1.f, 1.f, .5);
glBindTexture(GL_TEXTURE_2D, texid[tiles[cloudtile]->refcount]); // sky tile
glBindTexture(GL_TEXTURE_2D, texid[(long int)tiles[cloudtile]->userdata]); // sky tile
glBegin( GL_QUADS );
glTexCoord2f((real_t)(ticks % 240) / 240, (real_t)(ticks % 240) / 240);
glVertex3f(-CLIPFAR * 16, 32, -CLIPFAR * 16);
Expand Down Expand Up @@ -954,13 +954,13 @@ void glDrawWorld(view_t* camera, int mode)
{
if ( map.tiles[index] < 0 || map.tiles[index] >= numtiles )
{
new_tex = texid[sprites[0]->refcount];
//glBindTexture(GL_TEXTURE_2D, texid[sprites[0]->refcount]);
new_tex = texid[(long int)sprites[0]->userdata];
//glBindTexture(GL_TEXTURE_2D, texid[(long int)sprites[0]->userdata]);
}
else
{
new_tex = texid[tiles[map.tiles[index]]->refcount];
//glBindTexture(GL_TEXTURE_2D, texid[tiles[map.tiles[index]]->refcount]);
new_tex = texid[(long int)tiles[map.tiles[index]]->userdata];
//glBindTexture(GL_TEXTURE_2D, texid[(long int)tiles[map.tiles[index]]->userdata]);
}
}
else
Expand Down Expand Up @@ -1282,8 +1282,8 @@ void glDrawWorld(view_t* camera, int mode)
// bind texture
if ( mode == REALCOLORS )
{
new_tex = texid[tiles[mapceilingtile]->refcount];
//glBindTexture(GL_TEXTURE_2D, texid[tiles[50]->refcount]); // rock tile
new_tex = texid[(long int)tiles[mapceilingtile]->userdata];
//glBindTexture(GL_TEXTURE_2D, texid[(long int)tiles[50]->userdata]); // rock tile
if (cur_tex!=new_tex)
{
glEnd();
Expand Down
2 changes: 1 addition & 1 deletion src/savepng.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ SDL_Surface* SDL_PNGFormatAlpha(SDL_Surface* src)
/* NO-OP for images < 32bpp and 32bpp images that already have Alpha channel */
if (src->format->BitsPerPixel <= 24 || src->format->Amask)
{
src->refcount++;
src->userdata = (void *)((long int) src->userdata + 1);
return src;
}

Expand Down