From 1d36bec4a63210611ebf11177242032558a5966a Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Thu, 29 May 2003 16:32:58 +0000 Subject: [PATCH] change texture handler to use gl texture ids instead of keeping the data --- render2/texture.c | 15 ++++++++++++++- render2/texture.h | 3 ++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/render2/texture.c b/render2/texture.c index 4bde977e..f766e3bc 100644 --- a/render2/texture.c +++ b/render2/texture.c @@ -1,3 +1,4 @@ +#include "instance.h" #include "texture.h" #include "surface.h" #include @@ -12,6 +13,7 @@ void RrTextureFreeContents(struct RrTexture *tex) free(tex->data.text.string); break; case RR_TEXTURE_RGBA: + glDeleteTextures(1, &tex->data.rgba.texid); break; } tex->type = RR_TEXTURE_NONE; @@ -25,16 +27,27 @@ void RrTextureSetRGBA(struct RrSurface *sur, int w, int h) { + unsigned int num; struct RrTexture *tex = RrSurfaceTexture(sur, texnum); if (!tex) return; RrTextureFreeContents(tex); tex->type = RR_TEXTURE_RGBA; - tex->data.rgba.data = data; tex->data.rgba.x = x; tex->data.rgba.y = y; tex->data.rgba.w = w; tex->data.rgba.h = h; + glGenTextures(1, &num); + tex->data.rgba.texid = num; + glBindTexture(GL_TEXTURE_2D, num); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, + 0, GL_RGBA, GL_UNSIGNED_BYTE, data); } void RrTextureSetText(struct RrSurface *sur, diff --git a/render2/texture.h b/render2/texture.h index 3737dd19..238805e1 100644 --- a/render2/texture.h +++ b/render2/texture.h @@ -2,6 +2,7 @@ #define __render_texture_h #include "render.h" +#include enum RrTextureType { RR_TEXTURE_NONE, @@ -16,7 +17,7 @@ struct RrTextureText { }; struct RrTextureRGBA { - RrData32 *data; + GLuint texid; int x; int y; int w; -- 2.34.1