added GL_ARB_texture_mirrored_repeat
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: extensions.c,v 1.64 2001/08/13 18:09:34 brianp Exp $ */
|
/* $Id: extensions.c,v 1.65 2001/10/17 13:31:07 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -65,6 +65,7 @@ static struct {
|
|||||||
{ OFF, "GL_ARB_texture_env_add", F(EXT_texture_env_add) },
|
{ OFF, "GL_ARB_texture_env_add", F(EXT_texture_env_add) },
|
||||||
{ OFF, "GL_ARB_texture_env_combine", F(ARB_texture_env_combine) },
|
{ OFF, "GL_ARB_texture_env_combine", F(ARB_texture_env_combine) },
|
||||||
{ OFF, "GL_ARB_texture_env_dot3", F(ARB_texture_env_dot3) },
|
{ OFF, "GL_ARB_texture_env_dot3", F(ARB_texture_env_dot3) },
|
||||||
|
{ OFF, "GL_ARB_texture_mirrored_repeat", F(ARB_texture_mirrored_repeat)},
|
||||||
{ ON, "GL_ARB_transpose_matrix", 0 },
|
{ ON, "GL_ARB_transpose_matrix", 0 },
|
||||||
{ ON, "GL_EXT_abgr", 0 },
|
{ ON, "GL_EXT_abgr", 0 },
|
||||||
{ ON, "GL_EXT_bgra", 0 },
|
{ ON, "GL_EXT_bgra", 0 },
|
||||||
@@ -138,6 +139,7 @@ _mesa_enable_sw_extensions(GLcontext *ctx)
|
|||||||
"GL_ARB_texture_env_add",
|
"GL_ARB_texture_env_add",
|
||||||
"GL_ARB_texture_env_combine",
|
"GL_ARB_texture_env_combine",
|
||||||
"GL_ARB_texture_env_dot3",
|
"GL_ARB_texture_env_dot3",
|
||||||
|
"GL_ARB_texture_mirrored_repeat",
|
||||||
"GL_EXT_blend_color",
|
"GL_EXT_blend_color",
|
||||||
"GL_EXT_blend_func_separate",
|
"GL_EXT_blend_func_separate",
|
||||||
"GL_EXT_blend_logic_op",
|
"GL_EXT_blend_logic_op",
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: glheader.h,v 1.22 2001/07/16 15:54:23 brianp Exp $ */
|
/* $Id: glheader.h,v 1.23 2001/10/17 13:31:07 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -260,4 +260,12 @@ typedef struct tagPIXELFORMATDESCRIPTOR PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESC
|
|||||||
typedef union { GLfloat f; GLint i; } fi_type;
|
typedef union { GLfloat f; GLint i; } fi_type;
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef GL_MIRRORED_REPEAT_ARB
|
||||||
|
#define GL_MIRRORED_REPEAT_ARB 0x8370
|
||||||
|
#endif
|
||||||
|
#ifndef GL_ARB_texture_mirrored_repeat
|
||||||
|
#define GL_ARB_texture_mirrored_repeat 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif /* GLHEADER_H */
|
#endif /* GLHEADER_H */
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: mtypes.h,v 1.50 2001/07/28 19:28:49 keithw Exp $ */
|
/* $Id: mtypes.h,v 1.51 2001/10/17 13:31:07 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -1202,6 +1202,7 @@ struct gl_extensions {
|
|||||||
GLboolean ARB_texture_cube_map;
|
GLboolean ARB_texture_cube_map;
|
||||||
GLboolean ARB_texture_env_combine;
|
GLboolean ARB_texture_env_combine;
|
||||||
GLboolean ARB_texture_env_dot3;
|
GLboolean ARB_texture_env_dot3;
|
||||||
|
GLboolean ARB_texture_mirrored_repeat;
|
||||||
GLboolean EXT_blend_color;
|
GLboolean EXT_blend_color;
|
||||||
GLboolean EXT_blend_func_separate;
|
GLboolean EXT_blend_func_separate;
|
||||||
GLboolean EXT_blend_logic_op;
|
GLboolean EXT_blend_logic_op;
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: texstate.c,v 1.57 2001/09/18 23:06:14 kschultz Exp $ */
|
/* $Id: texstate.c,v 1.58 2001/10/17 13:31:07 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -140,16 +140,10 @@ _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GL_DOT3_RGB_EXT:
|
|
||||||
case GL_DOT3_RGBA_EXT:
|
|
||||||
if (!ctx->Extensions.EXT_texture_env_dot3) {
|
|
||||||
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(param=%s)", mode);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case GL_DOT3_RGB_ARB:
|
case GL_DOT3_RGB_ARB:
|
||||||
case GL_DOT3_RGBA_ARB:
|
case GL_DOT3_RGBA_ARB:
|
||||||
if (!ctx->Extensions.ARB_texture_env_dot3) {
|
if (!ctx->Extensions.EXT_texture_env_dot3 &&
|
||||||
|
!ctx->Extensions.ARB_texture_env_dot3) {
|
||||||
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(param=%s)", mode);
|
TE_ERROR(GL_INVALID_ENUM, "glTexEnv(param=%s)", mode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -929,7 +923,9 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params )
|
|||||||
eparam==GL_REPEAT ||
|
eparam==GL_REPEAT ||
|
||||||
eparam==GL_CLAMP_TO_EDGE ||
|
eparam==GL_CLAMP_TO_EDGE ||
|
||||||
(eparam == GL_CLAMP_TO_BORDER_ARB &&
|
(eparam == GL_CLAMP_TO_BORDER_ARB &&
|
||||||
ctx->Extensions.ARB_texture_border_clamp)) {
|
ctx->Extensions.ARB_texture_border_clamp) ||
|
||||||
|
(eparam == GL_MIRRORED_REPEAT_ARB &&
|
||||||
|
ctx->Extensions.ARB_texture_mirrored_repeat)) {
|
||||||
texObj->WrapS = eparam;
|
texObj->WrapS = eparam;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -944,7 +940,9 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params )
|
|||||||
eparam==GL_REPEAT ||
|
eparam==GL_REPEAT ||
|
||||||
eparam==GL_CLAMP_TO_EDGE ||
|
eparam==GL_CLAMP_TO_EDGE ||
|
||||||
(eparam == GL_CLAMP_TO_BORDER_ARB &&
|
(eparam == GL_CLAMP_TO_BORDER_ARB &&
|
||||||
ctx->Extensions.ARB_texture_border_clamp)) {
|
ctx->Extensions.ARB_texture_border_clamp) ||
|
||||||
|
(eparam == GL_MIRRORED_REPEAT_ARB &&
|
||||||
|
ctx->Extensions.ARB_texture_mirrored_repeat)) {
|
||||||
texObj->WrapT = eparam;
|
texObj->WrapT = eparam;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -959,7 +957,9 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params )
|
|||||||
eparam==GL_REPEAT ||
|
eparam==GL_REPEAT ||
|
||||||
eparam==GL_CLAMP_TO_EDGE ||
|
eparam==GL_CLAMP_TO_EDGE ||
|
||||||
(eparam == GL_CLAMP_TO_BORDER_ARB &&
|
(eparam == GL_CLAMP_TO_BORDER_ARB &&
|
||||||
ctx->Extensions.ARB_texture_border_clamp)) {
|
ctx->Extensions.ARB_texture_border_clamp) ||
|
||||||
|
(eparam == GL_MIRRORED_REPEAT_ARB &&
|
||||||
|
ctx->Extensions.ARB_texture_mirrored_repeat)) {
|
||||||
texObj->WrapR = eparam;
|
texObj->WrapR = eparam;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: s_texture.c,v 1.39 2001/09/19 20:30:44 kschultz Exp $ */
|
/* $Id: s_texture.c,v 1.40 2001/10/17 13:31:07 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
@@ -92,6 +92,19 @@
|
|||||||
I0 = IFLOOR(U); \
|
I0 = IFLOOR(U); \
|
||||||
I1 = I0 + 1; \
|
I1 = I0 + 1; \
|
||||||
} \
|
} \
|
||||||
|
else if (wrapMode == GL_MIRRORED_REPEAT_ARB) { \
|
||||||
|
const GLint flr = IFLOOR(S); \
|
||||||
|
if (flr & 1) \
|
||||||
|
U = 1.0 - (S - (GLfloat) flr); /* flr is odd */ \
|
||||||
|
else \
|
||||||
|
U = S - (GLfloat) flr; /* flr is even */ \
|
||||||
|
I0 = IFLOOR(U); \
|
||||||
|
I1 = I0 + 1; \
|
||||||
|
if (I0 < 0) \
|
||||||
|
I0 = 0; \
|
||||||
|
if (I1 >= (GLint) SIZE) \
|
||||||
|
I1 = SIZE - 1; \
|
||||||
|
} \
|
||||||
else { \
|
else { \
|
||||||
ASSERT(wrapMode == GL_CLAMP); \
|
ASSERT(wrapMode == GL_CLAMP); \
|
||||||
if (S <= 0.0F) \
|
if (S <= 0.0F) \
|
||||||
@@ -142,6 +155,22 @@
|
|||||||
else \
|
else \
|
||||||
I = IFLOOR(S * SIZE); \
|
I = IFLOOR(S * SIZE); \
|
||||||
} \
|
} \
|
||||||
|
else if (wrapMode == GL_MIRRORED_REPEAT_ARB) { \
|
||||||
|
const GLfloat min = 1.0F / (2.0F * SIZE); \
|
||||||
|
const GLfloat max = 1.0F - min; \
|
||||||
|
const GLint flr = IFLOOR(S); \
|
||||||
|
GLfloat u; \
|
||||||
|
if (flr & 1) \
|
||||||
|
u = 1.0 - (S - (GLfloat) flr); /* flr is odd */ \
|
||||||
|
else \
|
||||||
|
u = S - (GLfloat) flr; /* flr is even */ \
|
||||||
|
if (u < min) \
|
||||||
|
I = 0; \
|
||||||
|
else if (u > max) \
|
||||||
|
I = SIZE - 1; \
|
||||||
|
else \
|
||||||
|
I = IFLOOR(u * SIZE); \
|
||||||
|
} \
|
||||||
else { \
|
else { \
|
||||||
ASSERT(wrapMode == GL_CLAMP); \
|
ASSERT(wrapMode == GL_CLAMP); \
|
||||||
/* s limited to [0,1] */ \
|
/* s limited to [0,1] */ \
|
||||||
@@ -2133,8 +2162,6 @@ texture_combine(const GLcontext *ctx,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GL_DOT3_RGB_EXT:
|
|
||||||
case GL_DOT3_RGBA_EXT:
|
|
||||||
case GL_DOT3_RGB_ARB:
|
case GL_DOT3_RGB_ARB:
|
||||||
case GL_DOT3_RGBA_ARB:
|
case GL_DOT3_RGBA_ARB:
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user