- if (unit->t2d)
- qglDisable(GL_TEXTURE_2D);
- }
- unit->t2d = 0;
- qglBindTexture(GL_TEXTURE_2D, unit->t2d);
- CHECKGLERROR
- }
- // update 3d texture binding
- if (unit->t3d)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (unit->t3d)
- qglDisable(GL_TEXTURE_3D);
- }
- unit->t3d = 0;
- qglBindTexture(GL_TEXTURE_3D, unit->t3d);
- CHECKGLERROR
- }
- // update cubemap texture binding
- if (unit->tcubemap)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (unit->tcubemap)
- qglDisable(GL_TEXTURE_CUBE_MAP_ARB);
- }
- unit->tcubemap = 0;
- qglBindTexture(GL_TEXTURE_CUBE_MAP_ARB, unit->tcubemap);
- CHECKGLERROR
- }
-}
-
-void R_Mesh_TexBind(unsigned int unitnum, int texnum)
-{
- gltextureunit_t *unit = gl_state.units + unitnum;
- if (unitnum >= backendimageunits)
- return;
- if (r_showtrispass)
- return;
- // update 1d texture binding
- if (unit->t1d)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (unit->t1d)
- qglDisable(GL_TEXTURE_1D);
- }
- unit->t1d = 0;
- qglBindTexture(GL_TEXTURE_1D, unit->t1d);
- CHECKGLERROR
- }
- // update 2d texture binding
- if (unit->t2d != texnum)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (texnum)
- {
- if (unit->t2d == 0)
- qglEnable(GL_TEXTURE_2D);
- }
- else
- {
- if (unit->t2d)
- qglDisable(GL_TEXTURE_2D);
- }
- }
- unit->t2d = texnum;
- qglBindTexture(GL_TEXTURE_2D, unit->t2d);
- CHECKGLERROR
- }
- // update 3d texture binding
- if (unit->t3d)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (unit->t3d)
- qglDisable(GL_TEXTURE_3D);
- }
- unit->t3d = 0;
- qglBindTexture(GL_TEXTURE_3D, unit->t3d);
- CHECKGLERROR
- }
- // update cubemap texture binding
- if (unit->tcubemap != 0)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (unit->tcubemap)
- qglDisable(GL_TEXTURE_CUBE_MAP_ARB);
- }
- unit->tcubemap = 0;
- qglBindTexture(GL_TEXTURE_CUBE_MAP_ARB, unit->tcubemap);
- CHECKGLERROR
- }
-}
-
-void R_Mesh_TexBind3D(unsigned int unitnum, int texnum)
-{
- gltextureunit_t *unit = gl_state.units + unitnum;
- if (unitnum >= backendimageunits)
- return;
- if (r_showtrispass)
- return;
- // update 1d texture binding
- if (unit->t1d)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (unit->t1d)
- qglDisable(GL_TEXTURE_1D);
- }
- unit->t1d = 0;
- qglBindTexture(GL_TEXTURE_1D, unit->t1d);
- CHECKGLERROR
- }
- // update 2d texture binding
- if (unit->t2d)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (unit->t2d)
- qglDisable(GL_TEXTURE_2D);
- }
- unit->t2d = 0;
- qglBindTexture(GL_TEXTURE_2D, unit->t2d);
- CHECKGLERROR
- }
- // update 3d texture binding
- if (unit->t3d != texnum)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (texnum)
- {
- if (unit->t3d == 0)
- qglEnable(GL_TEXTURE_3D);
- }
- else
- {
- if (unit->t3d)
- qglDisable(GL_TEXTURE_3D);
- }
- }
- unit->t3d = texnum;
- qglBindTexture(GL_TEXTURE_3D, unit->t3d);
- CHECKGLERROR
- }
- // update cubemap texture binding
- if (unit->tcubemap != 0)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (unit->tcubemap)
- qglDisable(GL_TEXTURE_CUBE_MAP_ARB);
- }
- unit->tcubemap = 0;
- qglBindTexture(GL_TEXTURE_CUBE_MAP_ARB, unit->tcubemap);
- CHECKGLERROR
- }
-}
-
-void R_Mesh_TexBindCubeMap(unsigned int unitnum, int texnum)
-{
- gltextureunit_t *unit = gl_state.units + unitnum;
- if (unitnum >= backendimageunits)
- return;
- if (r_showtrispass)
- return;
- // update 1d texture binding
- if (unit->t1d)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (unit->t1d)
- qglDisable(GL_TEXTURE_1D);
- }
- unit->t1d = 0;
- qglBindTexture(GL_TEXTURE_1D, unit->t1d);
- CHECKGLERROR
- }
- // update 2d texture binding
- if (unit->t2d)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (unit->t2d)
- qglDisable(GL_TEXTURE_2D);
- }
- unit->t2d = 0;
- qglBindTexture(GL_TEXTURE_2D, unit->t2d);
- CHECKGLERROR
- }
- // update 3d texture binding
- if (unit->t3d)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (unit->t3d)
- qglDisable(GL_TEXTURE_3D);
- }
- unit->t3d = 0;
- qglBindTexture(GL_TEXTURE_3D, unit->t3d);
- CHECKGLERROR
- }
- // update cubemap texture binding
- if (unit->tcubemap != texnum)
- {
- GL_ActiveTexture(unitnum);
- if (unitnum < backendunits)
- {
- if (texnum)
- {
- if (unit->tcubemap == 0)
- qglEnable(GL_TEXTURE_CUBE_MAP_ARB);
- }
- else
- {
- if (unit->tcubemap)
- qglDisable(GL_TEXTURE_CUBE_MAP_ARB);
- }
- }
- unit->tcubemap = texnum;
- qglBindTexture(GL_TEXTURE_CUBE_MAP_ARB, unit->tcubemap);
- CHECKGLERROR
- }
-}
-
-void R_Mesh_TexMatrix(unsigned int unitnum, const matrix4x4_t *matrix)
-{
- gltextureunit_t *unit = gl_state.units + unitnum;
- if (r_showtrispass)
- return;
- if (matrix->m[3][3])
- {
- // texmatrix specified, check if it is different
- if (!unit->texmatrixenabled || memcmp(&unit->matrix, matrix, sizeof(matrix4x4_t)))
- {
- matrix4x4_t tempmatrix;
- unit->texmatrixenabled = true;
- unit->matrix = *matrix;
- Matrix4x4_Transpose(&tempmatrix, &unit->matrix);
- qglMatrixMode(GL_TEXTURE);
- GL_ActiveTexture(unitnum);
- qglLoadMatrixf(&tempmatrix.m[0][0]);
- qglMatrixMode(GL_MODELVIEW);
- }
- }
- else
- {
- // no texmatrix specified, revert to identity
- if (unit->texmatrixenabled)
- {
- unit->texmatrixenabled = false;
- qglMatrixMode(GL_TEXTURE);
- GL_ActiveTexture(unitnum);
- qglLoadIdentity();
- qglMatrixMode(GL_MODELVIEW);