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

📄 fxg.c

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 C
📖 第 1 页 / 共 5 页
字号:
/* * Mesa 3-D graphics library * Version:  5.0.1 *  * Copyright (C) 1999-2003  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. *//* * Mesa/FX device driver. Interface to Glide3. * *  Copyright (c) 2003 - Daniel Borca *  Email : dborca@users.sourceforge.net *  Web   : http://www.geocities.com/dborca */#ifdef FX#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <assert.h>#define FX_TRAP_GLIDE_internal#include "fxg.h"/****************************************************************************\* logging                                                                    *\****************************************************************************/#if FX_TRAP_GLIDE#define TRAP_LOG trp_printf#ifdef __GNUC____attribute__ ((format(printf, 1, 2)))#endif /* __GNUC__ */int trp_printf (const char *format, ...){ va_list arg; int n; FILE *trap_file; va_start(arg, format); trap_file = fopen("trap.log", "a"); if (trap_file == NULL) {    trap_file = stderr; } n = vfprintf(trap_file, format, arg); fclose(trap_file); va_end(arg); return n;}#else  /* FX_TRAP_GLIDE */#ifdef __GNUC__#define TRAP_LOG(format, ...) do {} while (0)#else  /* __GNUC__ */#define TRAP_LOG              0 && (unsigned long)#endif /* __GNUC__ */#endif /* FX_TRAP_GLIDE */#if FX_TRAP_GLIDE/****************************************************************************\* helpers                                                                    *\****************************************************************************/#define GOT "\t"const char *TRP_BOOL (FxBool b){ return b ? "FXTRUE" : "FXFALSE";}#define TRAP_CASE_STRING(name) case name: return #name#define TRAP_NODEFAULT default: assert(0)const char *TRP_PARAM (FxU32 mode){ switch (mode) {        TRAP_CASE_STRING(GR_PARAM_DISABLE);        TRAP_CASE_STRING(GR_PARAM_ENABLE);        TRAP_NODEFAULT; }}const char *TRP_VTX (FxU32 param){ switch (param) {        TRAP_CASE_STRING(GR_PARAM_XY);        TRAP_CASE_STRING(GR_PARAM_Z);        TRAP_CASE_STRING(GR_PARAM_W);        TRAP_CASE_STRING(GR_PARAM_Q);        TRAP_CASE_STRING(GR_PARAM_FOG_EXT);        TRAP_CASE_STRING(GR_PARAM_A);        TRAP_CASE_STRING(GR_PARAM_RGB);        TRAP_CASE_STRING(GR_PARAM_PARGB);        TRAP_CASE_STRING(GR_PARAM_ST0);        TRAP_CASE_STRING(GR_PARAM_ST1);        TRAP_CASE_STRING(GR_PARAM_ST2);        TRAP_CASE_STRING(GR_PARAM_Q0);        TRAP_CASE_STRING(GR_PARAM_Q1);        TRAP_CASE_STRING(GR_PARAM_Q2);        TRAP_NODEFAULT; }}const char *TRP_ARRAY (FxU32 mode){ switch (mode) {        TRAP_CASE_STRING(GR_POINTS);        TRAP_CASE_STRING(GR_LINE_STRIP);        TRAP_CASE_STRING(GR_LINES);        TRAP_CASE_STRING(GR_POLYGON);        TRAP_CASE_STRING(GR_TRIANGLE_STRIP);        TRAP_CASE_STRING(GR_TRIANGLE_FAN);        TRAP_CASE_STRING(GR_TRIANGLES);        TRAP_CASE_STRING(GR_TRIANGLE_STRIP_CONTINUE);        TRAP_CASE_STRING(GR_TRIANGLE_FAN_CONTINUE);        TRAP_NODEFAULT; }}const char *TRP_BUFFER (GrBuffer_t buffer){ switch (buffer) {        TRAP_CASE_STRING(GR_BUFFER_FRONTBUFFER);        TRAP_CASE_STRING(GR_BUFFER_BACKBUFFER);        TRAP_CASE_STRING(GR_BUFFER_AUXBUFFER);        TRAP_CASE_STRING(GR_BUFFER_DEPTHBUFFER);        TRAP_CASE_STRING(GR_BUFFER_ALPHABUFFER);        TRAP_CASE_STRING(GR_BUFFER_TRIPLEBUFFER);        TRAP_CASE_STRING(GR_BUFFER_TEXTUREBUFFER_EXT);        TRAP_CASE_STRING(GR_BUFFER_TEXTUREAUXBUFFER_EXT);        TRAP_NODEFAULT; }}const char *TRP_ORIGIN (GrOriginLocation_t origin_location){ switch (origin_location) {        TRAP_CASE_STRING(GR_ORIGIN_UPPER_LEFT);        TRAP_CASE_STRING(GR_ORIGIN_LOWER_LEFT);        TRAP_CASE_STRING(GR_ORIGIN_ANY);        TRAP_NODEFAULT; }}const char *TRP_REFRESH (GrScreenRefresh_t refresh_rate){ switch (refresh_rate) {        TRAP_CASE_STRING(GR_REFRESH_60Hz);        TRAP_CASE_STRING(GR_REFRESH_70Hz);        TRAP_CASE_STRING(GR_REFRESH_72Hz);        TRAP_CASE_STRING(GR_REFRESH_75Hz);        TRAP_CASE_STRING(GR_REFRESH_80Hz);        TRAP_CASE_STRING(GR_REFRESH_90Hz);        TRAP_CASE_STRING(GR_REFRESH_100Hz);        TRAP_CASE_STRING(GR_REFRESH_85Hz);        TRAP_CASE_STRING(GR_REFRESH_120Hz);        TRAP_CASE_STRING(GR_REFRESH_NONE);        TRAP_NODEFAULT; }}const char *TRP_COLFMT (GrColorFormat_t color_format){ switch (color_format) {        TRAP_CASE_STRING(GR_COLORFORMAT_ARGB);        TRAP_CASE_STRING(GR_COLORFORMAT_ABGR);        TRAP_CASE_STRING(GR_COLORFORMAT_RGBA);        TRAP_CASE_STRING(GR_COLORFORMAT_BGRA);        TRAP_NODEFAULT; }}const char *TRP_RESOLUTION (GrScreenResolution_t screen_resolution){ switch (screen_resolution) {        TRAP_CASE_STRING(GR_RESOLUTION_320x200);        TRAP_CASE_STRING(GR_RESOLUTION_320x240);        TRAP_CASE_STRING(GR_RESOLUTION_400x256);        TRAP_CASE_STRING(GR_RESOLUTION_512x384);        TRAP_CASE_STRING(GR_RESOLUTION_640x200);        TRAP_CASE_STRING(GR_RESOLUTION_640x350);        TRAP_CASE_STRING(GR_RESOLUTION_640x400);        TRAP_CASE_STRING(GR_RESOLUTION_640x480);        TRAP_CASE_STRING(GR_RESOLUTION_800x600);        TRAP_CASE_STRING(GR_RESOLUTION_960x720);        TRAP_CASE_STRING(GR_RESOLUTION_856x480);        TRAP_CASE_STRING(GR_RESOLUTION_512x256);        TRAP_CASE_STRING(GR_RESOLUTION_1024x768);        TRAP_CASE_STRING(GR_RESOLUTION_1280x1024);        TRAP_CASE_STRING(GR_RESOLUTION_1600x1200);        TRAP_CASE_STRING(GR_RESOLUTION_400x300);        TRAP_CASE_STRING(GR_RESOLUTION_1152x864);        TRAP_CASE_STRING(GR_RESOLUTION_1280x960);        TRAP_CASE_STRING(GR_RESOLUTION_1600x1024);        TRAP_CASE_STRING(GR_RESOLUTION_1792x1344);        TRAP_CASE_STRING(GR_RESOLUTION_1856x1392);        TRAP_CASE_STRING(GR_RESOLUTION_1920x1440);        TRAP_CASE_STRING(GR_RESOLUTION_2048x1536);        TRAP_CASE_STRING(GR_RESOLUTION_2048x2048);        TRAP_CASE_STRING(GR_RESOLUTION_NONE);        TRAP_NODEFAULT; }}const char *TRP_BLEND (GrAlphaBlendFnc_t func){ switch (func) {        TRAP_CASE_STRING(GR_BLEND_ZERO);        TRAP_CASE_STRING(GR_BLEND_SRC_ALPHA);        TRAP_CASE_STRING(GR_BLEND_SRC_COLOR);        /*TRAP_CASE_STRING(GR_BLEND_DST_COLOR); ==GR_BLEND_SRC_COLOR*/        TRAP_CASE_STRING(GR_BLEND_DST_ALPHA);        TRAP_CASE_STRING(GR_BLEND_ONE);        TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_SRC_ALPHA);        TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_SRC_COLOR);        /*TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_DST_COLOR); ==GR_BLEND_ONE_MINUS_SRC_COLOR*/        TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_DST_ALPHA);        TRAP_CASE_STRING(GR_BLEND_SAME_COLOR_EXT);        /*TRAP_CASE_STRING(GR_BLEND_RESERVED_8); ==GR_BLEND_SAME_COLOR_EXT*/        TRAP_CASE_STRING(GR_BLEND_ONE_MINUS_SAME_COLOR_EXT);        /*TRAP_CASE_STRING(GR_BLEND_RESERVED_9); ==GR_BLEND_ONE_MINUS_SAME_COLOR_EXT*/        TRAP_CASE_STRING(GR_BLEND_RESERVED_A);        TRAP_CASE_STRING(GR_BLEND_RESERVED_B);        TRAP_CASE_STRING(GR_BLEND_RESERVED_C);        TRAP_CASE_STRING(GR_BLEND_RESERVED_D);        TRAP_CASE_STRING(GR_BLEND_RESERVED_E);        TRAP_CASE_STRING(GR_BLEND_ALPHA_SATURATE);        /*TRAP_CASE_STRING(GR_BLEND_PREFOG_COLOR); ==GR_BLEND_ALPHA_SATURATE*/        TRAP_NODEFAULT; }}const char *TRP_CMBFUNC (GrCombineFunction_t cfunc){ switch (cfunc) {        TRAP_CASE_STRING(GR_COMBINE_FUNCTION_ZERO);        /*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_NONE); ==GR_COMBINE_FUNCTION_ZERO*/        TRAP_CASE_STRING(GR_COMBINE_FUNCTION_LOCAL);        TRAP_CASE_STRING(GR_COMBINE_FUNCTION_LOCAL_ALPHA);        TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER);        /*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_BLEND_OTHER); ==GR_COMBINE_FUNCTION_SCALE_OTHER*/        TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL);        TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA);        TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL);        TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL);        /*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_BLEND); ==GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL*/        TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA);        TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL);        /*TRAP_CASE_STRING(GR_COMBINE_FUNCTION_BLEND_LOCAL); ==GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL*/        TRAP_CASE_STRING(GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA);        TRAP_NODEFAULT; }}const char *TRP_CMBFACT (GrCombineFactor_t cfactor){ switch (cfactor) {        TRAP_CASE_STRING(GR_COMBINE_FACTOR_ZERO);        /*TRAP_CASE_STRING(GR_COMBINE_FACTOR_NONE); ==GR_COMBINE_FACTOR_ZERO*/        TRAP_CASE_STRING(GR_COMBINE_FACTOR_LOCAL);        TRAP_CASE_STRING(GR_COMBINE_FACTOR_OTHER_ALPHA);        TRAP_CASE_STRING(GR_COMBINE_FACTOR_LOCAL_ALPHA);        TRAP_CASE_STRING(GR_COMBINE_FACTOR_TEXTURE_ALPHA);        TRAP_CASE_STRING(GR_COMBINE_FACTOR_TEXTURE_RGB);        /*TRAP_CASE_STRING(GR_COMBINE_FACTOR_DETAIL_FACTOR); ==GR_COMBINE_FACTOR_TEXTURE_ALPHA*/        /*TRAP_CASE_STRING(GR_COMBINE_FACTOR_LOD_FRACTION); ==GR_COMBINE_FACTOR_TEXTURE_RGB ???*/        TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE);        TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_LOCAL);        TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA);        TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA);        TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA);        /*TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_DETAIL_FACTOR); ==GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA*/        TRAP_CASE_STRING(GR_COMBINE_FACTOR_ONE_MINUS_LOD_FRACTION);        TRAP_NODEFAULT; }}const char *TRP_CMBLOCAL (GrCombineLocal_t clocal){ switch (clocal) {        TRAP_CASE_STRING(GR_COMBINE_LOCAL_ITERATED);        TRAP_CASE_STRING(GR_COMBINE_LOCAL_CONSTANT);        /*TRAP_CASE_STRING(GR_COMBINE_LOCAL_NONE); ==GR_COMBINE_LOCAL_CONSTANT*/        TRAP_CASE_STRING(GR_COMBINE_LOCAL_DEPTH);        TRAP_NODEFAULT; }}const char *TRP_CMBOTHER (GrCombineOther_t cother){ switch (cother) {        TRAP_CASE_STRING(GR_COMBINE_OTHER_ITERATED);        TRAP_CASE_STRING(GR_COMBINE_OTHER_TEXTURE);        TRAP_CASE_STRING(GR_COMBINE_OTHER_CONSTANT);        /*TRAP_CASE_STRING(GR_COMBINE_OTHER_NONE); ==GR_COMBINE_OTHER_CONSTANT*/        TRAP_NODEFAULT; }}const char *TRP_CMPFUNC (GrCmpFnc_t function){ switch (function) {        TRAP_CASE_STRING(GR_CMP_NEVER);        TRAP_CASE_STRING(GR_CMP_LESS);        TRAP_CASE_STRING(GR_CMP_EQUAL);        TRAP_CASE_STRING(GR_CMP_LEQUAL);        TRAP_CASE_STRING(GR_CMP_GREATER);        TRAP_CASE_STRING(GR_CMP_NOTEQUAL);        TRAP_CASE_STRING(GR_CMP_GEQUAL);        TRAP_CASE_STRING(GR_CMP_ALWAYS);        TRAP_NODEFAULT; }}const char *TRP_CKMODE (GrChromakeyMode_t mode){ switch (mode) {        TRAP_CASE_STRING(GR_CHROMAKEY_DISABLE);        TRAP_CASE_STRING(GR_CHROMAKEY_ENABLE);        TRAP_NODEFAULT; }}const char *TRP_CULLMODE (GrCullMode_t mode){ switch (mode) {        TRAP_CASE_STRING(GR_CULL_DISABLE);        TRAP_CASE_STRING(GR_CULL_NEGATIVE);        TRAP_CASE_STRING(GR_CULL_POSITIVE);        TRAP_NODEFAULT; }}const char *TRP_DEPTHMODE (GrDepthBufferMode_t mode){ switch (mode) {        TRAP_CASE_STRING(GR_DEPTHBUFFER_DISABLE);        TRAP_CASE_STRING(GR_DEPTHBUFFER_ZBUFFER);        TRAP_CASE_STRING(GR_DEPTHBUFFER_WBUFFER);        TRAP_CASE_STRING(GR_DEPTHBUFFER_ZBUFFER_COMPARE_TO_BIAS);        TRAP_CASE_STRING(GR_DEPTHBUFFER_WBUFFER_COMPARE_TO_BIAS);        TRAP_NODEFAULT; }}const char *TRP_DITHERMODE (GrDitherMode_t mode){ switch (mode) {        TRAP_CASE_STRING(GR_DITHER_DISABLE);        TRAP_CASE_STRING(GR_DITHER_2x2);        TRAP_CASE_STRING(GR_DITHER_4x4);        TRAP_NODEFAULT; }}const char *TRP_FOGMODE (GrFogMode_t mode){ switch (mode) {        TRAP_CASE_STRING(GR_FOG_DISABLE);        TRAP_CASE_STRING(GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT);        TRAP_CASE_STRING(GR_FOG_WITH_TABLE_ON_Q);        /*TRAP_CASE_STRING(GR_FOG_WITH_TABLE_ON_W); ==GR_FOG_WITH_TABLE_ON_Q*/        TRAP_CASE_STRING(GR_FOG_WITH_ITERATED_Z);        TRAP_CASE_STRING(GR_FOG_WITH_ITERATED_ALPHA_EXT);        TRAP_CASE_STRING(GR_FOG_MULT2);        TRAP_CASE_STRING(GR_FOG_ADD2);        TRAP_NODEFAULT; }}

⌨️ 快捷键说明

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