⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fxsetup.h

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 H
📖 第 1 页 / 共 3 页
字号:
         colorComb.ModeB   = GR_FUNC_MODE_NEGATIVE_X;         colorComb.SourceC = GR_CMBX_LOCAL_TEXTURE_RGB;         colorComb.InvertC = FXFALSE;         colorComb.SourceD = GR_CMBX_B;      }      fxMesa->Glide.grConstantColorValueExt(tmu,         (((GLuint)(envColor[0] * 255.0f))      ) |         (((GLuint)(envColor[1] * 255.0f)) <<  8) |         (((GLuint)(envColor[2] * 255.0f)) << 16) |         (((GLuint)(envColor[3] * 255.0f)) << 24));      break;   case GL_REPLACE:      if (ifmt == GL_LUMINANCE || ifmt == GL_RGB) {         alphaComb.SourceA = locala;         alphaComb.ModeA   = GR_FUNC_MODE_X;         alphaComb.SourceB = GR_CMBX_ZERO;         alphaComb.ModeB   = GR_FUNC_MODE_X;         alphaComb.SourceC = GR_CMBX_ZERO;         alphaComb.InvertC = FXTRUE;         alphaComb.SourceD = GR_CMBX_ZERO;      } else {         alphaComb.SourceA = GR_CMBX_LOCAL_TEXTURE_ALPHA;         alphaComb.ModeA   = GR_FUNC_MODE_X;         alphaComb.SourceB = GR_CMBX_ZERO;         alphaComb.ModeB   = GR_FUNC_MODE_X;         alphaComb.SourceC = GR_CMBX_ZERO;         alphaComb.InvertC = FXTRUE;         alphaComb.SourceD = GR_CMBX_ZERO;      }      if (ifmt == GL_ALPHA) {         colorComb.SourceA = localc;         colorComb.ModeA   = GR_FUNC_MODE_X;         colorComb.SourceB = GR_CMBX_ZERO;         colorComb.ModeB   = GR_FUNC_MODE_X;         colorComb.SourceC = GR_CMBX_ZERO;         colorComb.InvertC = FXTRUE;         colorComb.SourceD = GR_CMBX_ZERO;      } else {         colorComb.SourceA = GR_CMBX_LOCAL_TEXTURE_RGB;         colorComb.ModeA   = GR_FUNC_MODE_X;         colorComb.SourceB = GR_CMBX_ZERO;         colorComb.ModeB   = GR_FUNC_MODE_X;         colorComb.SourceC = GR_CMBX_ZERO;         colorComb.InvertC = FXTRUE;         colorComb.SourceD = GR_CMBX_ZERO;      }      break;   case GL_ADD:      if (ifmt == GL_LUMINANCE || ifmt == GL_RGB) {         alphaComb.SourceA = locala;         alphaComb.ModeA   = GR_FUNC_MODE_X;         alphaComb.SourceB = GR_CMBX_ZERO;         alphaComb.ModeB   = GR_FUNC_MODE_X;         alphaComb.SourceC = GR_CMBX_ZERO;         alphaComb.InvertC = FXTRUE;         alphaComb.SourceD = GR_CMBX_ZERO;      } else if (ifmt == GL_INTENSITY) {         alphaComb.SourceA = locala;         alphaComb.ModeA   = GR_FUNC_MODE_X;         alphaComb.SourceB = GR_CMBX_LOCAL_TEXTURE_ALPHA;         alphaComb.ModeB   = GR_FUNC_MODE_X;         alphaComb.SourceC = GR_CMBX_ZERO;         alphaComb.InvertC = FXTRUE;         alphaComb.SourceD = GR_CMBX_ZERO;      } else {         alphaComb.SourceA = locala;         alphaComb.ModeA   = GR_FUNC_MODE_X;         alphaComb.SourceB = GR_CMBX_ZERO;         alphaComb.ModeB   = GR_FUNC_MODE_X;         alphaComb.SourceC = GR_CMBX_LOCAL_TEXTURE_ALPHA;         alphaComb.InvertC = FXFALSE;         alphaComb.SourceD = GR_CMBX_ZERO;      }      if (ifmt == GL_ALPHA) {         colorComb.SourceA = localc;         colorComb.ModeA   = GR_FUNC_MODE_X;         colorComb.SourceB = GR_CMBX_ZERO;         colorComb.ModeB   = GR_FUNC_MODE_X;         colorComb.SourceC = GR_CMBX_ZERO;         colorComb.InvertC = FXTRUE;         colorComb.SourceD = GR_CMBX_ZERO;      } else {         colorComb.SourceA = localc;         colorComb.ModeA   = GR_FUNC_MODE_X;         colorComb.SourceB = GR_CMBX_LOCAL_TEXTURE_RGB;         colorComb.ModeB   = GR_FUNC_MODE_X;         colorComb.SourceC = GR_CMBX_ZERO;         colorComb.InvertC = FXTRUE;         colorComb.SourceD = GR_CMBX_ZERO;      }      break;    /* COMBINE_EXT */    case GL_COMBINE_EXT:      /* XXX todo - INCOMPLETE!!! */      if (TDFX_DEBUG & (VERBOSE_DRIVER | VERBOSE_TEXTURE)) {#if 1         fprintf(stderr, "COMBINE_EXT: %s + %s\n",	      _mesa_lookup_enum_by_nr(texUnit->Combine.ModeRGB),	      _mesa_lookup_enum_by_nr(texUnit->Combine.ModeA));#else         fprintf(stderr, "Texture Unit %d\n", textureset);         fprintf(stderr, "  GL_TEXTURE_ENV_MODE = %s\n", _mesa_lookup_enum_by_nr(texUnit->EnvMode));         fprintf(stderr, "  GL_COMBINE_RGB = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.ModeRGB));         fprintf(stderr, "  GL_COMBINE_ALPHA = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.ModeA));         fprintf(stderr, "  GL_SOURCE0_RGB = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.SourceRGB[0]));         fprintf(stderr, "  GL_SOURCE1_RGB = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.SourceRGB[1]));         fprintf(stderr, "  GL_SOURCE2_RGB = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.SourceRGB[2]));         fprintf(stderr, "  GL_SOURCE0_ALPHA = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.SourceA[0]));         fprintf(stderr, "  GL_SOURCE1_ALPHA = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.SourceA[1]));         fprintf(stderr, "  GL_SOURCE2_ALPHA = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.SourceA[2]));         fprintf(stderr, "  GL_OPERAND0_RGB = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.OperandRGB[0]));         fprintf(stderr, "  GL_OPERAND1_RGB = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.OperandRGB[1]));         fprintf(stderr, "  GL_OPERAND2_RGB = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.OperandRGB[2]));         fprintf(stderr, "  GL_OPERAND0_ALPHA = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.OperandA[0]));         fprintf(stderr, "  GL_OPERAND1_ALPHA = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.OperandA[1]));         fprintf(stderr, "  GL_OPERAND2_ALPHA = %s\n", _mesa_lookup_enum_by_nr(texUnit->Combine.OperandA[2]));         fprintf(stderr, "  GL_RGB_SCALE = %d\n", 1 << texUnit->Combine.ScaleShiftRGB);         fprintf(stderr, "  GL_ALPHA_SCALE = %d\n", 1 << texUnit->Combine.ScaleShiftA);         fprintf(stderr, "  GL_TEXTURE_ENV_COLOR = (%f, %f, %f, %f)\n", envColor[0], envColor[1], envColor[2], envColor[3]);#endif      }      alphaComb.Shift   = texUnit->Combine.ScaleShiftA;      colorComb.Shift   = texUnit->Combine.ScaleShiftRGB;      switch (texUnit->Combine.ModeRGB) {             case GL_MODULATE:                  /* Arg0 * Arg1 == (A + 0) * C + 0 */                  TEXENV_SETUP_ARG_RGB(colorComb.SourceA,                                       texUnit->Combine.SourceRGB[0],                                       texUnit->Combine.OperandRGB[0],                                       localc, locala);                  TEXENV_SETUP_MODE_RGB(colorComb.ModeA,                                        texUnit->Combine.OperandRGB[0]);                  colorComb.SourceB = GR_CMBX_ZERO;                  colorComb.ModeB   = GR_FUNC_MODE_ZERO;                  TEXENV_SETUP_ARG_RGB(colorComb.SourceC,                                       texUnit->Combine.SourceRGB[1],                                       texUnit->Combine.OperandRGB[1],                                       localc, locala);                  colorComb.InvertC = TEXENV_OPERAND_INVERTED(                                       texUnit->Combine.OperandRGB[1]);                  colorComb.SourceD = GR_CMBX_ZERO;                  break;             case GL_REPLACE:                  /* Arg0 == (A + 0) * 1 + 0 */                  TEXENV_SETUP_ARG_RGB(colorComb.SourceA,                                       texUnit->Combine.SourceRGB[0],                                       texUnit->Combine.OperandRGB[0],                                       localc, locala);                  TEXENV_SETUP_MODE_RGB(colorComb.ModeA,                                        texUnit->Combine.OperandRGB[0]);                  colorComb.SourceB = GR_CMBX_ZERO;                  colorComb.ModeB   = GR_FUNC_MODE_ZERO;                  colorComb.SourceC = GR_CMBX_ZERO;                  colorComb.InvertC = FXTRUE;                  colorComb.SourceD = GR_CMBX_ZERO;                  break;             case GL_ADD:                  /* Arg0 + Arg1 = (A + B) * 1 + 0 */                  TEXENV_SETUP_ARG_RGB(colorComb.SourceA,                                       texUnit->Combine.SourceRGB[0],                                       texUnit->Combine.OperandRGB[0],                                       localc, locala);                  TEXENV_SETUP_MODE_RGB(colorComb.ModeA,                                        texUnit->Combine.OperandRGB[0]);                  TEXENV_SETUP_ARG_RGB(colorComb.SourceB,                                       texUnit->Combine.SourceRGB[1],                                       texUnit->Combine.OperandRGB[1],                                       localc, locala);                  TEXENV_SETUP_MODE_RGB(colorComb.ModeB,                                        texUnit->Combine.OperandRGB[1]);                  colorComb.SourceC = GR_CMBX_ZERO;                  colorComb.InvertC = FXTRUE;                  colorComb.SourceD = GR_CMBX_ZERO;                  break;             case GL_INTERPOLATE_EXT:                  /* Arg0 * Arg2 + Arg1 * (1 - Arg2) ==                   * (Arg0 - Arg1) * Arg2 + Arg1 == (A - B) * C + D                   */                  TEXENV_SETUP_ARG_RGB(colorComb.SourceA,                                       texUnit->Combine.SourceRGB[0],                                       texUnit->Combine.OperandRGB[0],                                       localc, locala);                  TEXENV_SETUP_MODE_RGB(colorComb.ModeA,                                        texUnit->Combine.OperandRGB[0]);                  TEXENV_SETUP_ARG_RGB(colorComb.SourceB,                                       texUnit->Combine.SourceRGB[1],                                       texUnit->Combine.OperandRGB[1],                                       localc, locala);                  if (TEXENV_OPERAND_INVERTED(texUnit->Combine.OperandRGB[1])) {                     /* Hack alert!!! This case is wrong!!! */                     fprintf(stderr, "COMBINE_EXT_color: WRONG!!!\n");                     colorComb.ModeB = GR_FUNC_MODE_NEGATIVE_X;                  } else {                     colorComb.ModeB = GR_FUNC_MODE_NEGATIVE_X;                  }                  /*                   * The Source/Operand for the C value must                   * specify some kind of alpha value.                   */                  TEXENV_SETUP_ARG_A(colorComb.SourceC,                                     texUnit->Combine.SourceRGB[2],                                     texUnit->Combine.OperandRGB[2],                                     locala);                  colorComb.InvertC = FXFALSE;                  colorComb.SourceD = GR_CMBX_B;                  break;             default:                  fprintf(stderr, "COMBINE_EXT_color: %s\n",                                  _mesa_lookup_enum_by_nr(texUnit->Combine.ModeRGB));      }      switch (texUnit->Combine.ModeA) {             case GL_MODULATE:                  /* Arg0 * Arg1 == (A + 0) * C + 0 */                  TEXENV_SETUP_ARG_A(alphaComb.SourceA,                                     texUnit->Combine.SourceA[0],                                     texUnit->Combine.OperandA[0],                                     locala);                  TEXENV_SETUP_MODE_A(alphaComb.ModeA,                                      texUnit->Combine.OperandA[0]);                  alphaComb.SourceB = GR_CMBX_ZERO;                  alphaComb.ModeB   = GR_FUNC_MODE_ZERO;                  TEXENV_SETUP_ARG_A(alphaComb.SourceC,                                     texUnit->Combine.SourceA[1],                                     texUnit->Combine.OperandA[1],                                     locala);                  alphaComb.InvertC = TEXENV_OPERAND_INVERTED(                                       texUnit->Combine.OperandA[1]);                  alphaComb.SourceD = GR_CMBX_ZERO;                  break;             case GL_REPLACE:                 /* Arg0 == (A + 0) * 1 + 0 */                  TEXENV_SETUP_ARG_A(alphaComb.SourceA,                                     texUnit->Combine.SourceA[0],                                     texUnit->Combine.OperandA[0],                                     locala);                  TEXENV_SETUP_MODE_A(alphaComb.ModeA,                                      texUnit->Combine.OperandA[0]);                  alphaComb.SourceB = GR_CMBX_ZERO;                  alphaComb.ModeB   = GR_FUNC_MODE_ZERO;                  alphaComb.SourceC = GR_CMBX_ZERO;                  alphaComb.InvertC = FXTRUE;                  alphaComb.SourceD = GR_CMBX_ZERO;                  break;             case GL_ADD:                  /* Arg0 + Arg1 = (A + B) * 1 + 0 */                  TEXENV_SETUP_ARG_A(alphaComb.SourceA,                                     texUnit->Combine.SourceA[0],                                     texUnit->Combine.OperandA[0],                                     locala);                  TEXENV_SETUP_MODE_A(alphaComb.ModeA,                                      texUnit->Combine.OperandA[0]);                  TEXENV_SETUP_ARG_A(alphaComb.SourceB,                                     texUnit->Combine.SourceA[1],                                     texUnit->Combine.OperandA[1],                                     locala);                  TEXENV_SETUP_MODE_A(alphaComb.ModeB,                                      texUnit->Combine.OperandA[1]);                  alphaComb.SourceC = GR_CMBX_ZERO;                  alphaComb.InvertC = FXTRUE;                  alphaComb.SourceD = GR_CMBX_ZERO;                  break;             default:                  fprintf(stderr, "COMBINE_EXT_alpha: %s\n",                                  _mesa_lookup_enum_by_nr(texUnit->Combine.ModeA));      }      fxMesa->Glide.grConstantColorValueExt(tmu,         (((GLuint)(envColor[0] * 255.0f))      ) |         (((GLuint)(envColor[1] * 255.0f)) <<  8) |         (((GLuint)(envColor[2] * 255.0f)) << 16) |         (((GLuint)(envColor[3] * 255.0f)) << 24));      break;   default:      if (TDFX_DEBUG & VERBOSE_DRIVER) {	 fprintf(stderr, "fxSetupTextureEnvNapalm_NoLock: %x Texture.EnvMode not yet supported\n",		 texUnit->EnvMode);      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -