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

📄 fxglidew.h

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 H
字号:
/* * Mesa 3-D graphics library * Version:  4.0 * * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *//* Authors: *    David Bucciarelli *    Brian Paul *    Daryll Strauss *    Keith Whitwell *    Daniel Borca *    Hiroshi Morii */#ifndef __FX_GLIDE_WARPER__#define __FX_GLIDE_WARPER__#include "fxg.h"#ifndef FX_PACKEDCOLOR#define FX_PACKEDCOLOR 1#endif#define MAX_NUM_SST             4enum {      GR_SSTTYPE_VOODOO  = 0,      GR_SSTTYPE_SST96   = 1,      GR_SSTTYPE_AT3D    = 2,      GR_SSTTYPE_Voodoo2 = 3,      GR_SSTTYPE_Banshee = 4,      GR_SSTTYPE_Voodoo3 = 5,      GR_SSTTYPE_Voodoo4 = 6,      GR_SSTTYPE_Voodoo5 = 7};#define GrState                 voidtypedef int GrSstType;typedef struct GrTMUConfig_St {        int tmuRev;		/* Rev of Texelfx chip */        int tmuRam;		/* 1, 2, or 4 MB */} GrTMUConfig_t;typedef struct {        int num_sst;		/* # of HW units in the system */        struct SstCard_St {               GrSstType type;	/* Which hardware is it? */               int fbRam;	/* 1, 2, or 4 MB */               int fbiRev;	/* Rev of Pixelfx chip */               int nTexelfx;	/* How many texelFX chips are there? */               int numChips;	/* Number of Voodoo chips */               GrTMUConfig_t tmuConfig[GLIDE_NUM_TMU];	/* Configuration of the Texelfx chips */               /* Glide3 extensions */               FxBool HavePalExt;	/* PALETTE6666 */               FxBool HavePixExt;	/* PIXEXT */               FxBool HaveTexFmt;	/* TEXFMT */               FxBool HaveCmbExt;	/* COMBINE */               FxBool HaveMirExt;	/* TEXMIRROR */               FxBool HaveTexUma;	/* TEXUMA */        }        SSTs[MAX_NUM_SST];	/* configuration for each board */        struct tdfx_glide Glide;} GrHwConfiguration;typedef FxU32 GrHint_t;#define GR_HINTTYPE_MIN         0#define GR_HINT_STWHINT         0typedef FxU32 GrSTWHint_t;#define GR_STWHINT_W_DIFF_FBI   FXBIT(0)#define GR_STWHINT_W_DIFF_TMU0  FXBIT(1)#define GR_STWHINT_ST_DIFF_TMU0 FXBIT(2)#define GR_STWHINT_W_DIFF_TMU1  FXBIT(3)#define GR_STWHINT_ST_DIFF_TMU1 FXBIT(4)#define GR_STWHINT_W_DIFF_TMU2  FXBIT(5)#define GR_STWHINT_ST_DIFF_TMU2 FXBIT(6)#define GR_CONTROL_ACTIVATE     1#define GR_CONTROL_DEACTIVATE   0/*** move the vertex layout defintion to application*/typedef struct {        float sow;		/* s texture ordinate (s over w) */        float tow;		/* t texture ordinate (t over w) */        float oow;		/* 1/w (used mipmapping - really 0xfff/w) */} GrTmuVertex;#if FX_PACKEDCOLORtypedef struct {        float x, y;		/* X and Y in screen space */        float ooz;		/* 65535/Z (used for Z-buffering) */        float oow;		/* 1/W (used for W-buffering, texturing) */        unsigned char pargb[4];	/* B, G, R, A [0..255] */        GrTmuVertex tmuvtx[GLIDE_NUM_TMU];        float fog;		/* fog coordinate */        unsigned char pspec[4];	/* B, G, R, A [0..255] */        float psize;		/* point size */        long pad[16 - 14];	/* ensure 64b structure */} GrVertex;#define GR_VERTEX_X_OFFSET              0#define GR_VERTEX_Y_OFFSET              1#define GR_VERTEX_OOZ_OFFSET            2#define GR_VERTEX_OOW_OFFSET            3#define GR_VERTEX_PARGB_OFFSET          4#define GR_VERTEX_SOW_TMU0_OFFSET       5#define GR_VERTEX_TOW_TMU0_OFFSET       6#define GR_VERTEX_OOW_TMU0_OFFSET       7#define GR_VERTEX_SOW_TMU1_OFFSET       8#define GR_VERTEX_TOW_TMU1_OFFSET       9#define GR_VERTEX_OOW_TMU1_OFFSET       10#define GR_VERTEX_FOG_OFFSET            11#define GR_VERTEX_PSPEC_OFFSET          12#else  /* !FX_PACKEDCOLOR */typedef struct {        float x, y;		/* X and Y in screen space */        float ooz;		/* 65535/Z (used for Z-buffering) */        float oow;		/* 1/W (used for W-buffering, texturing) */        float r, g, b, a;	/* R, G, B, A [0..255] */        GrTmuVertex tmuvtx[GLIDE_NUM_TMU];        float fog;		/* fog coordinate */        float r1, g1, b1;	/* R, G, B [0..255] */        float psize;		/* point size */        long pad[20 - 19];	/* ensure multiple of 16 */} GrVertex;#define GR_VERTEX_X_OFFSET              0#define GR_VERTEX_Y_OFFSET              1#define GR_VERTEX_OOZ_OFFSET            2#define GR_VERTEX_OOW_OFFSET            3#define GR_VERTEX_RGB_OFFSET            4#define GR_VERTEX_A_OFFSET              7#define GR_VERTEX_SOW_TMU0_OFFSET       8#define GR_VERTEX_TOW_TMU0_OFFSET       9#define GR_VERTEX_OOW_TMU0_OFFSET       10#define GR_VERTEX_SOW_TMU1_OFFSET       11#define GR_VERTEX_TOW_TMU1_OFFSET       12#define GR_VERTEX_OOW_TMU1_OFFSET       13#define GR_VERTEX_FOG_OFFSET            14#define GR_VERTEX_SPEC_OFFSET           15#endif /* !FX_PACKEDCOLOR *//* * For Lod/LodLog2 conversion. */#define FX_largeLodLog2(info)		(info).largeLodLog2#define FX_aspectRatioLog2(info)	(info).aspectRatioLog2#define FX_smallLodLog2(info)		(info).smallLodLog2#define FX_lodToValue(val)		((int)(GR_LOD_LOG2_256-val))#define FX_largeLodValue(info)		((int)(GR_LOD_LOG2_256-(info).largeLodLog2))#define FX_smallLodValue(info)		((int)(GR_LOD_LOG2_256-(info).smallLodLog2))#define FX_valueToLod(val)		((GrLOD_t)(GR_LOD_LOG2_256-val))/* * Query */extern int FX_grSstScreenWidth(void);extern int FX_grSstScreenHeight(void);extern void FX_grSstPerfStats(GrSstPerfStats_t *st);extern int FX_grSstQueryHardware(GrHwConfiguration *config);#define FX_grGetInteger FX_grGetInteger_NoLockextern FxI32 FX_grGetInteger_NoLock(FxU32 pname);/* * GrHints */#define FX_grHints FX_grHints_NoLockextern void FX_grHints_NoLock(GrHint_t hintType, FxU32 hintMask);/* * Needed for Glide3 only, to set up Glide2 compatible vertex layout. */extern void FX_setupGrVertexLayout(void);/* * grSstControl stuff */extern FxBool FX_grSstControl(FxU32 code);#define FX_grBufferClear(c, a, d)	\  do {					\    BEGIN_CLIP_LOOP();			\    grBufferClear(c, a, d);		\    END_CLIP_LOOP();			\  } while (0)#endif /* __FX_GLIDE_WARPER__ */

⌨️ 快捷键说明

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