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

📄 fxsetup.h

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 H
📖 第 1 页 / 共 3 页
字号:
      return;   }   /* On Napalm we simply put the color combine unit into passthrough mode    * and do everything we need with the texture combine units. */   fxMesa->Glide.grColorCombineExt(GR_CMBX_TEXTURE_RGB,                                   GR_FUNC_MODE_X,                                   GR_CMBX_ZERO,                                   GR_FUNC_MODE_X,                                   GR_CMBX_ZERO,                                   FXTRUE,                                   GR_CMBX_ZERO,                                   FXFALSE,                                   0,                                   FXFALSE);   fxMesa->Glide.grAlphaCombineExt(GR_CMBX_TEXTURE_ALPHA,                                   GR_FUNC_MODE_X,                                   GR_CMBX_ZERO,                                   GR_FUNC_MODE_X,                                   GR_CMBX_ZERO,                                   FXTRUE,                                   GR_CMBX_ZERO,                                   FXFALSE,                                   0,                                   FXFALSE);   fxMesa->Glide.grTexAlphaCombineExt(tmu,                                      alphaComb.SourceA,                                      alphaComb.ModeA,                                      alphaComb.SourceB,                                      alphaComb.ModeB,                                      alphaComb.SourceC,                                      alphaComb.InvertC,                                      alphaComb.SourceD,                                      alphaComb.InvertD,                                      alphaComb.Shift,                                      alphaComb.Invert);   fxMesa->Glide.grTexColorCombineExt(tmu,                                      colorComb.SourceA,                                      colorComb.ModeA,                                      colorComb.SourceB,                                      colorComb.ModeB,                                      colorComb.SourceC,                                      colorComb.InvertC,                                      colorComb.SourceD,                                      colorComb.InvertD,                                      colorComb.Shift,                                      colorComb.Invert);}/************************* Single Texture Set ***************************/static voidfxSelectSingleTMUSrcNapalm_NoLock(fxMesaContext fxMesa, GLint tmu, FxBool LODblend){   if (TDFX_DEBUG & VERBOSE_DRIVER) {      fprintf(stderr, "fxSelectSingleTMUSrcNapalm_NoLock(%d, %d)\n", tmu, LODblend);   }   if (LODblend) {      /* XXX todo - GR_CMBX_LOD_FRAC? */      fxMesa->tmuSrc = FX_TMU_SPLIT;   }   else {      if (tmu != FX_TMU1) {         /* disable tex1 */         if (fxMesa->haveTwoTMUs) {            fxMesa->Glide.grTexAlphaCombineExt(FX_TMU1,                                               GR_CMBX_ZERO,                                               GR_FUNC_MODE_ZERO,                                               GR_CMBX_ZERO,                                               GR_FUNC_MODE_ZERO,                                               GR_CMBX_ZERO,                                               FXTRUE,                                               GR_CMBX_ZERO,                                               FXFALSE,                                               0,                                               FXFALSE);            fxMesa->Glide.grTexColorCombineExt(FX_TMU1,                                               GR_CMBX_ZERO,                                               GR_FUNC_MODE_ZERO,                                               GR_CMBX_ZERO,                                               GR_FUNC_MODE_ZERO,                                               GR_CMBX_ZERO,                                               FXTRUE,                                               GR_CMBX_ZERO,                                               FXFALSE,                                               0,                                               FXFALSE);         }	 fxMesa->tmuSrc = FX_TMU0;      }      else {#if 1         grTexCombine(GR_TMU0,                      GR_COMBINE_FUNCTION_BLEND,                      GR_COMBINE_FACTOR_ONE,                      GR_COMBINE_FUNCTION_BLEND,                      GR_COMBINE_FACTOR_ONE,                      FXFALSE,                      FXFALSE);#else         /* [dBorca] why, oh why? doesn't work! stupid Glide? */         fxMesa->Glide.grTexAlphaCombineExt(FX_TMU0,                                            GR_CMBX_OTHER_TEXTURE_ALPHA,                                            GR_FUNC_MODE_X,                                            GR_CMBX_ZERO,                                            GR_FUNC_MODE_X,                                            GR_CMBX_ZERO,                                            FXTRUE,                                            GR_CMBX_ZERO,                                            FXFALSE,                                            0,                                            FXFALSE);         fxMesa->Glide.grTexColorCombineExt(FX_TMU0,                                            GR_CMBX_OTHER_TEXTURE_RGB,                                            GR_FUNC_MODE_X,                                            GR_CMBX_ZERO,                                            GR_FUNC_MODE_X,                                            GR_CMBX_ZERO,                                            FXTRUE,                                            GR_CMBX_ZERO,                                            FXFALSE,                                            0,                                            FXFALSE);#endif	 fxMesa->tmuSrc = FX_TMU1;      }   }}static voidfxSetupTextureSingleTMUNapalm_NoLock(GLcontext * ctx, GLuint textureset){   fxMesaContext fxMesa = FX_CONTEXT(ctx);   GLuint unitsmode;   tfxTexInfo *ti;   struct gl_texture_object *tObj = ctx->Texture.Unit[textureset]._Current;   int tmu;   if (TDFX_DEBUG & VERBOSE_DRIVER) {      fprintf(stderr, "fxSetupTextureSingleTMUNapalm_NoLock(%d)\n", textureset);   }   ti = fxTMGetTexInfo(tObj);   fxTexValidate(ctx, tObj);   fxSetupSingleTMU_NoLock(fxMesa, tObj);   if (ti->whichTMU == FX_TMU_BOTH)      tmu = FX_TMU0;   else      tmu = ti->whichTMU;   if (fxMesa->tmuSrc != tmu)      fxSelectSingleTMUSrcNapalm_NoLock(fxMesa, tmu, ti->LODblend);   if (textureset == 0 || !fxMesa->haveTwoTMUs)      unitsmode = fxGetTexSetConfiguration(ctx, tObj, NULL);   else      unitsmode = fxGetTexSetConfiguration(ctx, NULL, tObj);/*    if(fxMesa->lastUnitsMode==unitsmode) *//*      return; */   fxMesa->lastUnitsMode = unitsmode;   fxMesa->stw_hint_state = 0;   FX_grHints_NoLock(GR_HINT_STWHINT, 0);   if (TDFX_DEBUG & (VERBOSE_DRIVER | VERBOSE_TEXTURE))      fprintf(stderr, "fxSetupTextureSingleTMUNapalm_NoLock: envmode is %s\n",	      _mesa_lookup_enum_by_nr(ctx->Texture.Unit[textureset].EnvMode));   /* [dBorca] Hack alert:    * what if we're in split mode? (LODBlend)    * also should we update BOTH TMUs in FX_TMU_BOTH mode?    */   fxSetupTextureEnvNapalm_NoLock(ctx, textureset, tmu, GL_TRUE);}/************************* Double Texture Set ***************************/static voidfxSetupTextureDoubleTMUNapalm_NoLock(GLcontext * ctx){   fxMesaContext fxMesa = FX_CONTEXT(ctx);   tfxTexInfo *ti0, *ti1;   struct gl_texture_object *tObj0 = ctx->Texture.Unit[1]._Current;   struct gl_texture_object *tObj1 = ctx->Texture.Unit[0]._Current;   GLuint unitsmode;   int tmu0 = 0, tmu1 = 1;   if (TDFX_DEBUG & VERBOSE_DRIVER) {      fprintf(stderr, "fxSetupTextureDoubleTMUNapalm_NoLock(...)\n");   }   ti0 = fxTMGetTexInfo(tObj0);   fxTexValidate(ctx, tObj0);   ti1 = fxTMGetTexInfo(tObj1);   fxTexValidate(ctx, tObj1);   fxSetupDoubleTMU_NoLock(fxMesa, tObj0, tObj1);   unitsmode = fxGetTexSetConfiguration(ctx, tObj0, tObj1);/*    if(fxMesa->lastUnitsMode==unitsmode) *//*      return; */   fxMesa->lastUnitsMode = unitsmode;   fxMesa->stw_hint_state |= GR_STWHINT_ST_DIFF_TMU1;   FX_grHints_NoLock(GR_HINT_STWHINT, fxMesa->stw_hint_state);   if (TDFX_DEBUG & (VERBOSE_DRIVER | VERBOSE_TEXTURE))      fprintf(stderr, "fxSetupTextureDoubleTMUNapalm_NoLock: envmode is %s/%s\n",	      _mesa_lookup_enum_by_nr(ctx->Texture.Unit[0].EnvMode),	      _mesa_lookup_enum_by_nr(ctx->Texture.Unit[1].EnvMode));   if ((ti0->whichTMU == FX_TMU1) || (ti1->whichTMU == FX_TMU0)) {      tmu0 = 1;      tmu1 = 0;   }   fxMesa->tmuSrc = FX_TMU_BOTH;   /* OpenGL vs Glide texture pipeline */   fxSetupTextureEnvNapalm_NoLock(ctx, 0, 1, GL_TRUE);   fxSetupTextureEnvNapalm_NoLock(ctx, 1, 0, GL_FALSE);}/************************* No Texture ***************************/static voidfxSetupTextureNoneNapalm_NoLock(GLcontext * ctx){   fxMesaContext fxMesa = FX_CONTEXT(ctx);   if (TDFX_DEBUG & VERBOSE_DRIVER) {      fprintf(stderr, "fxSetupTextureNoneNapalm_NoLock(...)\n");   }   /* the combiner formula is: (A + B) * C + D   **   ** a = tc_otherselect   ** a_mode = tc_invert_other   ** b = tc_localselect   ** b_mode = tc_invert_local   ** c = (tc_mselect, tc_mselect_7)   ** d = (tc_add_clocal, tc_add_alocal)   ** shift = tc_outshift   ** invert = tc_invert_output   */   fxMesa->Glide.grColorCombineExt(GR_CMBX_ITRGB,                                   GR_FUNC_MODE_X,                                   GR_CMBX_ZERO,                                   GR_FUNC_MODE_ZERO,                                   GR_CMBX_ZERO,                                   FXTRUE,                                   GR_CMBX_ZERO,                                   FXFALSE,                                   0,                                   FXFALSE);   fxMesa->Glide.grAlphaCombineExt(GR_CMBX_ITALPHA,                                   GR_FUNC_MODE_X,                                   GR_CMBX_ZERO,                                   GR_FUNC_MODE_ZERO,                                   GR_CMBX_ZERO,                                   FXTRUE,                                   GR_CMBX_ZERO,                                   FXFALSE,                                   0,                                   FXFALSE);   fxMesa->lastUnitsMode = FX_UM_NONE;}

⌨️ 快捷键说明

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