added GL_ARB_texture_env_combine, GL_ARB_texture_env_dot3
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
$Id: VERSIONS,v 1.51 2001/03/17 00:47:19 brianp Exp $
|
||||
$Id: VERSIONS,v 1.52 2001/03/22 04:55:48 brianp Exp $
|
||||
|
||||
|
||||
Mesa Version History
|
||||
@@ -821,6 +821,8 @@ Mesa Version History
|
||||
- GL_SGIX_depth_texture extension
|
||||
- GL_SGIX_shadow and GL_SGIX_shadow_ambient extensions
|
||||
- demos/shadowtex.c demo of GL_SGIX_depth_texture and GL_SGIX_shadow
|
||||
- GL_ARB_texture_env_combine extension
|
||||
- GL_ARB_texture_env_dot3 extension
|
||||
- OSMesaCreateContextExt() function
|
||||
- libOSMesa.so library, contains the OSMesa driver interface
|
||||
- GL/glxext.h header file for GLX extensions
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* $Id: extensions.c,v 1.53 2001/03/18 08:53:49 gareth Exp $ */
|
||||
/* $Id: extensions.c,v 1.54 2001/03/22 04:54:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -61,6 +61,8 @@ static struct {
|
||||
{ OFF, "GL_ARB_texture_compression", F(ARB_texture_compression) },
|
||||
{ OFF, "GL_ARB_texture_cube_map", F(ARB_texture_cube_map) },
|
||||
{ OFF, "GL_ARB_texture_env_add", F(EXT_texture_env_add) },
|
||||
{ OFF, "GL_ARB_texture_env_combine", F(EXT_texture_env_combine) },
|
||||
{ OFF, "GL_ARB_texture_env_dot3", F(EXT_texture_env_dot3) },
|
||||
{ ON, "GL_ARB_tranpose_matrix", 0 },
|
||||
{ ON, "GL_EXT_abgr", 0 },
|
||||
{ ON, "GL_EXT_bgra", 0 },
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* $Id: texstate.c,v 1.37 2001/03/18 08:53:50 gareth Exp $ */
|
||||
/* $Id: texstate.c,v 1.38 2001/03/22 04:54:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -55,6 +55,14 @@
|
||||
#endif
|
||||
|
||||
|
||||
/* XXX this is temporary, until GL/glext.h is updated. */
|
||||
#ifndef GL_DOT3_RGB_ARB
|
||||
#define GL_DOT3_RGB_ARB 0x86AE
|
||||
#endif
|
||||
#ifndef GL_DOT3_RGBA_ARB
|
||||
#define GL_DOT3_RGBA_ARB 0x86AF
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
@@ -127,6 +135,8 @@ _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param )
|
||||
break;
|
||||
case GL_DOT3_RGB_EXT:
|
||||
case GL_DOT3_RGBA_EXT:
|
||||
case GL_DOT3_RGB_ARB:
|
||||
case GL_DOT3_RGBA_ARB:
|
||||
if (!ctx->Extensions.EXT_texture_env_dot3) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, "glTexEnv(param)");
|
||||
return;
|
||||
@@ -272,7 +282,10 @@ _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param )
|
||||
if (ctx->Extensions.EXT_texture_env_combine) {
|
||||
GLenum operand = (GLenum) (GLint) *param;
|
||||
switch (operand) {
|
||||
case GL_SRC_COLOR: /* ARB combine only */
|
||||
case GL_ONE_MINUS_SRC_COLOR: /* ARB combine only */
|
||||
case GL_SRC_ALPHA:
|
||||
case GL_ONE_MINUS_SRC_ALPHA: /* ARB combine only */
|
||||
if (texUnit->CombineOperandRGB[2] == operand)
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
@@ -292,6 +305,7 @@ _mesa_TexEnvfv( GLenum target, GLenum pname, const GLfloat *param )
|
||||
GLenum operand = (GLenum) (GLint) *param;
|
||||
switch (operand) {
|
||||
case GL_SRC_ALPHA:
|
||||
case GL_ONE_MINUS_SRC_ALPHA: /* ARB combine only */
|
||||
if (texUnit->CombineOperandA[2] == operand)
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* $Id: s_texture.c,v 1.17 2001/03/21 16:04:49 brianp Exp $ */
|
||||
/* $Id: s_texture.c,v 1.18 2001/03/22 04:54:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -38,6 +38,14 @@
|
||||
#include "s_texture.h"
|
||||
|
||||
|
||||
/* XXX this is temporary, until GL/glext.h is updated. */
|
||||
#ifndef GL_DOT3_RGB_ARB
|
||||
#define GL_DOT3_RGB_ARB 0x86AE
|
||||
#endif
|
||||
#ifndef GL_DOT3_RGBA_ARB
|
||||
#define GL_DOT3_RGBA_ARB 0x86AF
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* These values are used in the fixed-point arithmetic used
|
||||
@@ -1689,6 +1697,9 @@ texture_combine(const GLcontext *ctx,
|
||||
|
||||
ASSERT(ctx->Extensions.EXT_texture_env_combine);
|
||||
|
||||
/*
|
||||
* Do operand setup for up to 3 operands. Loop over the terms.
|
||||
*/
|
||||
for (j = 0; j < 3; j++) {
|
||||
switch (textureUnit->CombineSourceA[j]) {
|
||||
case GL_TEXTURE:
|
||||
@@ -1763,7 +1774,8 @@ texture_combine(const GLcontext *ctx,
|
||||
dst[i][BCOMP] = src[i][ACOMP];
|
||||
}
|
||||
}
|
||||
else { /* GL_ONE_MINUS_SRC_ALPHA */
|
||||
else {
|
||||
ASSERT(textureUnit->CombineOperandRGB[j] ==GL_ONE_MINUS_SRC_ALPHA);
|
||||
src = (const GLchan (*)[4]) argA[j];
|
||||
for (i = 0; i < n; i++) {
|
||||
dst[i][RCOMP] = CHAN_MAX - src[i][ACOMP];
|
||||
@@ -1794,6 +1806,9 @@ texture_combine(const GLcontext *ctx,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Do the texture combine.
|
||||
*/
|
||||
switch (textureUnit->CombineModeRGB) {
|
||||
case GL_REPLACE:
|
||||
{
|
||||
@@ -1887,6 +1902,8 @@ texture_combine(const GLcontext *ctx,
|
||||
break;
|
||||
case GL_DOT3_RGB_EXT:
|
||||
case GL_DOT3_RGBA_EXT:
|
||||
case GL_DOT3_RGB_ARB:
|
||||
case GL_DOT3_RGBA_ARB:
|
||||
{
|
||||
const GLubyte (*arg0)[4] = (const GLubyte (*)[4]) argRGB[0];
|
||||
const GLubyte (*arg1)[4] = (const GLubyte (*)[4]) argRGB[1];
|
||||
@@ -1980,7 +1997,8 @@ texture_combine(const GLcontext *ctx,
|
||||
|
||||
/* Fix the alpha component for GL_DOT3_RGBA_EXT combining.
|
||||
*/
|
||||
if (textureUnit->CombineModeRGB == GL_DOT3_RGBA_EXT) {
|
||||
if (textureUnit->CombineModeRGB == GL_DOT3_RGBA_EXT ||
|
||||
textureUnit->CombineModeRGB == GL_DOT3_RGBA_ARB) {
|
||||
for (i = 0; i < n; i++) {
|
||||
rgba[i][ACOMP] = rgba[i][RCOMP];
|
||||
}
|
||||
|
Reference in New Issue
Block a user