📄 tdfx_context.h
字号:
struct tdfxSharedState { GLboolean umaTexMemory; GLuint totalTexMem[TDFX_NUM_TMU]; /* constant */ GLuint freeTexMem[TDFX_NUM_TMU]; /* changes as we go */ tdfxMemRange *tmPool; tdfxMemRange *tmFree[TDFX_NUM_TMU];};/* ================================================================ * The vertex structures. *//* The size of this union is not of relevence: */typedef struct tdfx_vertex_t { GLfloat x, y, z; /* Coordinates in screen space */ GLfloat rhw; /* Reciprocal homogeneous w */ GLubyte color[4]; /* Diffuse color */ GLfloat fog; GLfloat tu0, tv0; /* Texture 0 coordinates */ GLfloat tu1, tv1; /* Texture 1 coordinates */ GLfloat tq0, tq1; /* Texture 0/1 q coords */ unsigned char pspec[4]; /* B, G, R, A [0..255] */ float psize; /* point size */ long pad[16 - 14]; /* ensure 64b structure */} tdfxVertex, *tdfxVertexPtr;/* ================================================================ * * We want to keep a mirror of the Glide function call parameters so we * can avoid updating our state too often. * * Each of these broad groups will typically have a new state flag * associated with it, and will be updated together. The individual * Glide function calls each have a dirty flag and will only be called * when absolutely necessary. *//* for grTexSource() */struct tdfx_texsource { FxU32 StartAddress; FxU32 EvenOdd; GrTexInfo *Info;};/* Texture object params */struct tdfx_texparams { GrTextureClampMode_t sClamp; GrTextureClampMode_t tClamp; GrTextureFilterMode_t minFilt; GrTextureFilterMode_t magFilt; GrMipMapMode_t mmMode; FxBool LODblend; GLfloat LodBias;};/* for grTexDownloadTable() texture palettes */struct tdfx_texpalette { GrTexTable_t Type; void *Data;};/* for Voodoo3/Banshee's grColorCombine() and grAlphaCombine() */struct tdfx_combine { GrCombineFunction_t Function; /* Combine function */ GrCombineFactor_t Factor; /* Combine scale factor */ GrCombineLocal_t Local; /* Local combine source */ GrCombineOther_t Other; /* Other combine source */ FxBool Invert; /* Combine result inversion flag */};/* for Voodoo3's grTexCombine() */struct tdfx_texcombine { GrCombineFunction_t FunctionRGB; GrCombineFactor_t FactorRGB; GrCombineFunction_t FunctionAlpha; GrCombineFactor_t FactorAlpha; FxBool InvertRGB; FxBool InvertAlpha;};/* for Voodoo5's grColorCombineExt() */struct tdfx_combine_color_ext { GrCCUColor_t SourceA; GrCombineMode_t ModeA; GrCCUColor_t SourceB; GrCombineMode_t ModeB; GrCCUColor_t SourceC; FxBool InvertC; GrCCUColor_t SourceD; FxBool InvertD; FxU32 Shift; FxBool Invert;};/* for Voodoo5's grAlphaCombineExt() */struct tdfx_combine_alpha_ext { GrACUColor_t SourceA; GrCombineMode_t ModeA; GrACUColor_t SourceB; GrCombineMode_t ModeB; GrACUColor_t SourceC; FxBool InvertC; GrACUColor_t SourceD; FxBool InvertD; FxU32 Shift; FxBool Invert;};/* for Voodoo5's grTexColorCombineExt() */struct tdfx_color_texenv { GrTCCUColor_t SourceA; GrCombineMode_t ModeA; GrTCCUColor_t SourceB; GrCombineMode_t ModeB; GrTCCUColor_t SourceC; FxBool InvertC; GrTCCUColor_t SourceD; FxBool InvertD; FxU32 Shift; FxBool Invert;};/* for Voodoo5's grTexAlphaCombineExt() */struct tdfx_alpha_texenv { GrTACUColor_t SourceA; GrCombineMode_t ModeA; GrTACUColor_t SourceB; GrCombineMode_t ModeB; GrTACUColor_t SourceC; FxBool InvertC; GrTCCUColor_t SourceD; FxBool InvertD; FxU32 Shift; FxBool Invert;};/* Voodoo5's texture combine environment */struct tdfx_texcombine_ext { struct tdfx_alpha_texenv Alpha; struct tdfx_color_texenv Color; GrColor_t EnvColor;};/* Used to track changes between Glide's state and Mesa's */struct tdfx_texstate { GLuint Enabled[2]; /* values ala ctx->Texture.Unit[i]._ReallyEnabled */ GLenum EnvMode[TDFX_NUM_TMU]; /* index is Glide index, not OpenGL */ GLenum TexFormat[TDFX_NUM_TMU]; /* index is Glide index, not OpenGL */};struct tdfx_color { GrColor_t ClearColor; /* Buffer clear color value */ GrAlpha_t ClearAlpha; /* Buffer clear alpha value */ FxBool ColorMask[4]; /* Per-channel write enable flags */ GrColor_t MonoColor; /* Constant color value */ /* Alpha testing */ GrCmpFnc_t AlphaFunc; /* Alpha test function */ GrAlpha_t AlphaRef; /* Alpha ref value in range [0,255] */ /* Blending */ GrAlphaBlendFnc_t BlendSrcRGB; /* Blend source RGB factor */ GrAlphaBlendFnc_t BlendDstRGB; /* Blend destination RGB factor */ GrAlphaBlendOp_t BlendEqRGB; /* Blend source RGB op */ GrAlphaBlendFnc_t BlendSrcA; /* Blend source alpha factor */ GrAlphaBlendFnc_t BlendDstA; /* Blend destination alpha factor */ GrAlphaBlendOp_t BlendEqA; /* Blend source alpha op */ GrDitherMode_t Dither; /* Dither enable */};struct tdfx_depth { GrDepthBufferMode_t Mode; /* Fixed-point Z or floating-point W */ FxI32 Bias; /* Polygon offset factor */ GrCmpFnc_t Func; /* Depth test function */ FxU32 Clear; /* Buffer clear value */ FxBool Mask; /* Write enable flag */};struct tdfx_stipple { GrStippleMode_t Mode; /* Stipple enable/disable */ FxU32 Pattern; /* 8x4 Stipple Pattern */};struct tdfx_fog { GrFogMode_t Mode; /* Glide fog mode */ GrColor_t Color; /* Fog color value */ GLenum TableMode; /* GL fog mode currently in table */ GrFog_t *Table; /* Fog value table */ FxFloat Density; /* Density >= 0 */ FxFloat Near; /* Start distance in eye coords */ FxFloat Far; /* End distance in eye coords */};struct tdfx_stencil { GrCmpFnc_t Function; /* Stencil function */ GrStencil_t RefValue; /* Stencil reference value */ GrStencil_t ValueMask; /* Value mask */ GrStencil_t WriteMask; /* Write mask */ GrStencil_t FailFunc; /* Stencil fail function */ GrStencil_t ZFailFunc; /* Stencil pass, depth fail function */ GrStencil_t ZPassFunc; /* Stencil pass, depth pass function */ GrStencil_t Clear; /* Buffer clear value */};struct tdfx_scissor { FxU32 minX, minY; /* Lower left corner */ FxU32 maxX, maxY; /* Upper right corner */};struct tdfx_viewport { GrCoordinateSpaceMode_t Mode; /* Coordinate space */ FxI32 X, Y; /* Position */ FxI32 Width, Height; /* Size */ FxFloat Near, Far; /* Depth buffer range */};struct tdfx_glide { void *State; /* Mirror of internal Glide state */ GrContext_t Context; /* Glide context identifier */ FxI32 Board; /* Current graphics subsystem */ GrColorFormat_t ColorFormat; /* Framebuffer format */ GrOriginLocation_t Origin; /* Location of screen space origin */ FxBool Initialized; /* Glide initialization done? */ FxI32 SwapInterval; /* SwapBuffers interval */ FxI32 MaxPendingSwaps; /* Maximum outstanding SwapBuffers */ FxI32 TextureAlign; /* Extensions */ FxBool HaveCombineExt; /* COMBINE */ FxBool HaveCommandTransportExt; /* COMMAND_TRANSPORT */ FxBool HaveFogCoordExt; /* FOGCOORD */ FxBool HavePixelExt; /* PIXEXT */ FxBool HaveTextureBufferExt; /* TEXTUREBUFFER */ FxBool HaveTexFmtExt; /* TEXFMT */ FxBool HaveTexUMAExt; /* TEXUMA */ FxBool HaveMirrorExt; /* MIRROR */ FxBool HaveTexus2; /* Texus 2 - FXT1 */ /* Glide library function pointers */ void (*grDrawPoint)( const void *pt ); void (*grDrawLine)( const void *v1, const void *v2 ); void (*grDrawTriangle)( const void *a, const void *b, const void *c ); void (*grVertexLayout)(FxU32 param, FxI32 offset, FxU32 mode); void (*grDrawVertexArray)(FxU32 mode, FxU32 Count, void *pointers); void (*grDrawVertexArrayContiguous)(FxU32 mode, FxU32 Count, void *pointers, FxU32 stride); void (*grBufferClear)( GrColor_t color, GrAlpha_t alpha, FxU32 depth ); void (*grBufferSwap)( FxU32 swap_interval ); void (*grRenderBuffer)( GrBuffer_t buffer ); void (*grErrorSetCallback)( GrErrorCallbackFnc_t fnc ); void (*grFinish)(void); void (*grFlush)(void); GrContext_t (*grSstWinOpen)(FxU32 hWnd, GrScreenResolution_t screen_resolution, GrScreenRefresh_t refresh_rate, GrColorFormat_t color_format, GrOriginLocation_t origin_location, int nColBuffers, int nAuxBuffers); void (*grSstWinClose)( GrContext_t context );/* Not used */#if 0 void (*grSetNumPendingBuffers)(FxI32 NumPendingBuffers);#endif void (*grSelectContext)( GrContext_t context ); void (*grSstOrigin)(GrOriginLocation_t origin); void (*grSstSelect)( int which_sst ); void (*grAlphaBlendFunction)(GrAlphaBlendFnc_t rgb_sf, GrAlphaBlendFnc_t rgb_df, GrAlphaBlendFnc_t alpha_sf, GrAlphaBlendFnc_t alpha_df); void (*grAlphaCombine)(GrCombineFunction_t function, GrCombineFactor_t factor, GrCombineLocal_t local, GrCombineOther_t other, FxBool invert); void (*grAlphaControlsITRGBLighting)( FxBool enable ); void (*grAlphaTestFunction)( GrCmpFnc_t function ); void (*grAlphaTestReferenceValue)( GrAlpha_t value ); void (*grChromakeyMode)( GrChromakeyMode_t mode ); void (*grChromakeyValue)( GrColor_t value ); void (*grClipWindow)( FxU32 minx, FxU32 miny, FxU32 maxx, FxU32 maxy ); void (*grColorCombine)( GrCombineFunction_t function, GrCombineFactor_t factor, GrCombineLocal_t local, GrCombineOther_t other, FxBool invert ); void (*grColorMask)( FxBool rgb, FxBool a ); void (*grCullMode)( GrCullMode_t mode ); void (*grConstantColorValue)( GrColor_t value ); void (*grDepthBiasLevel)( FxI32 level ); void (*grDepthBufferFunction)( GrCmpFnc_t function ); void (*grDepthBufferMode)( GrDepthBufferMode_t mode ); void (*grDepthMask)( FxBool mask ); void (*grDisableAllEffects)( void ); void (*grDitherMode)( GrDitherMode_t mode ); void (*grFogColorValue)( GrColor_t fogcolor ); void (*grFogMode)( GrFogMode_t mode ); void (*grFogTable)( const GrFog_t ft[] ); void (*grLoadGammaTable)( FxU32 nentries, FxU32 *red, FxU32 *green, FxU32 *blue); void (*grSplash)(float x, float y, float width, float height, FxU32 frame); FxU32 (*grGet)( FxU32 pname, FxU32 plength, FxI32 *params ); const char * (*grGetString)( FxU32 pname ); FxI32 (*grQueryResolutions)( const GrResolution *resTemplate, GrResolution *output ); FxBool (*grReset)( FxU32 what ); GrProc (*grGetProcAddress)( char *procName ); void (*grEnable)( GrEnableMode_t mode ); void (*grDisable)( GrEnableMode_t mode ); void (*grCoordinateSpace)( GrCoordinateSpaceMode_t mode ); void (*grDepthRange)( FxFloat n, FxFloat f ); void (*grStippleMode)( GrStippleMode_t mode ); void (*grStipplePattern)( GrStipplePattern_t mode ); void (*grViewport)( FxI32 x, FxI32 y, FxI32 width, FxI32 height ); FxU32 (*grTexCalcMemRequired)(GrLOD_t lodmin, GrLOD_t lodmax, GrAspectRatio_t aspect, GrTextureFormat_t fmt); FxU32 (*grTexTextureMemRequired)( FxU32 evenOdd, GrTexInfo *info ); FxU32 (*grTexMinAddress)( GrChipID_t tmu ); FxU32 (*grTexMaxAddress)( GrChipID_t tmu ); void (*grTexNCCTable)( GrNCCTable_t table ); void (*grTexSource)( GrChipID_t tmu, FxU32 startAddress, FxU32 evenOdd, GrTexInfo *info ); void (*grTexClampMode)( GrChipID_t tmu, GrTextureClampMode_t s_clampmode, GrTextureClampMode_t t_clampmode ); void (*grTexCombine)( GrChipID_t tmu, GrCombineFunction_t rgb_function, GrCombineFactor_t rgb_factor, GrCombineFunction_t alpha_function, GrCombineFactor_t alpha_factor, FxBool rgb_invert, FxBool alpha_invert); void (*grTexDetailControl)( GrChipID_t tmu, int lod_bias,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -