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

📄 mtypes.h

📁 mesa-6.5-minigui源码
💻 H
📖 第 1 页 / 共 5 页
字号:
/** * \file mtypes.h * Main Mesa data structures. * * Please try to mark derived values with a leading underscore ('_'). *//* * Mesa 3-D graphics library * Version:  6.5 * * Copyright (C) 1999-2006  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. */#ifndef TYPES_H#define TYPES_H#include "glheader.h"#include <GL/internal/glcore.h>	/* GLimports/GLexports/GLcontextModes */#include "config.h"		/* Hardwired parameters */#include "glapitable.h"#include "glthread.h"#include "math/m_matrix.h"	/* GLmatrix *//** * Color channel data type. */#if CHAN_BITS == 8   typedef GLubyte GLchan;#define CHAN_MAX 255#define CHAN_MAXF 255.0F#define CHAN_TYPE GL_UNSIGNED_BYTE#elif CHAN_BITS == 16   typedef GLushort GLchan;#define CHAN_MAX 65535#define CHAN_MAXF 65535.0F#define CHAN_TYPE GL_UNSIGNED_SHORT#elif CHAN_BITS == 32   typedef GLfloat GLchan;#define CHAN_MAX 1.0#define CHAN_MAXF 1.0F#define CHAN_TYPE GL_FLOAT#else#error "illegal number of color channel bits"#endif/** * Stencil buffer data type. */#if STENCIL_BITS==8   typedef GLubyte GLstencil;#elif STENCIL_BITS==16   typedef GLushort GLstencil;#else#  error "illegal number of stencil bits"#endif/** * Fixed point data type. */typedef int GLfixed;/* * Fixed point arithmetic macros */#ifndef FIXED_FRAC_BITS#define FIXED_FRAC_BITS 11#endif#define FIXED_SHIFT     FIXED_FRAC_BITS#define FIXED_ONE       (1 << FIXED_SHIFT)#define FIXED_HALF      (1 << (FIXED_SHIFT-1))#define FIXED_FRAC_MASK (FIXED_ONE - 1)#define FIXED_INT_MASK  (~FIXED_FRAC_MASK)#define FIXED_EPSILON   1#define FIXED_SCALE     ((float) FIXED_ONE)#define FIXED_DBL_SCALE ((double) FIXED_ONE)#define FloatToFixed(X) (IROUND((X) * FIXED_SCALE))#define FixedToDouble(X) ((X) * (1.0 / FIXED_DBL_SCALE))#define IntToFixed(I)   ((I) << FIXED_SHIFT)#define FixedToInt(X)   ((X) >> FIXED_SHIFT)#define FixedToUns(X)   (((unsigned int)(X)) >> FIXED_SHIFT)#define FixedCeil(X)    (((X) + FIXED_ONE - FIXED_EPSILON) & FIXED_INT_MASK)#define FixedFloor(X)   ((X) & FIXED_INT_MASK)#define FixedToFloat(X) ((X) * (1.0F / FIXED_SCALE))#define PosFloatToFixed(X)      FloatToFixed(X)#define SignedFloatToFixed(X)   FloatToFixed(X)/** * \name Some forward type declarations *//*@{*/struct _mesa_HashTable;struct gl_pixelstore_attrib;struct gl_texture_format;struct gl_texture_image;struct gl_texture_object;typedef struct __GLcontextRec GLcontext;typedef struct __GLcontextModesRec GLvisual;typedef struct gl_framebuffer GLframebuffer;/*@}*//** * Indexes for vertex program attributes. * GL_NV_vertex_program aliases generic attributes over the conventional * attributes.  In GL_ARB_vertex_program shader the aliasing is optional. * In GL_ARB_vertex_shader / OpenGL 2.0 the aliasing is disallowed (the * generic attributes are distinct/separate). */enum{   VERT_ATTRIB_POS = 0,   VERT_ATTRIB_WEIGHT = 1,   VERT_ATTRIB_NORMAL = 2,   VERT_ATTRIB_COLOR0 = 3,   VERT_ATTRIB_COLOR1 = 4,   VERT_ATTRIB_FOG = 5,   VERT_ATTRIB_SIX = 6,   VERT_ATTRIB_SEVEN = 7,   VERT_ATTRIB_TEX0 = 8,   VERT_ATTRIB_TEX1 = 9,   VERT_ATTRIB_TEX2 = 10,   VERT_ATTRIB_TEX3 = 11,   VERT_ATTRIB_TEX4 = 12,   VERT_ATTRIB_TEX5 = 13,   VERT_ATTRIB_TEX6 = 14,   VERT_ATTRIB_TEX7 = 15,   VERT_ATTRIB_GENERIC0 = 16,   VERT_ATTRIB_GENERIC1 = 17,   VERT_ATTRIB_GENERIC2 = 18,   VERT_ATTRIB_GENERIC3 = 19,   VERT_ATTRIB_MAX = 16  /* XXX not counting generic attribs yet */};/** * Bitflags for vertex attributes. * These are used in bitfields in many places. *//*@{*/#define VERT_BIT_POS      (1 << VERT_ATTRIB_POS)#define VERT_BIT_WEIGHT   (1 << VERT_ATTRIB_WEIGHT)#define VERT_BIT_NORMAL   (1 << VERT_ATTRIB_NORMAL)#define VERT_BIT_COLOR0   (1 << VERT_ATTRIB_COLOR0)#define VERT_BIT_COLOR1   (1 << VERT_ATTRIB_COLOR1)#define VERT_BIT_FOG      (1 << VERT_ATTRIB_FOG)#define VERT_BIT_SIX      (1 << VERT_ATTRIB_SIX)#define VERT_BIT_SEVEN    (1 << VERT_ATTRIB_SEVEN)#define VERT_BIT_TEX0     (1 << VERT_ATTRIB_TEX0)#define VERT_BIT_TEX1     (1 << VERT_ATTRIB_TEX1)#define VERT_BIT_TEX2     (1 << VERT_ATTRIB_TEX2)#define VERT_BIT_TEX3     (1 << VERT_ATTRIB_TEX3)#define VERT_BIT_TEX4     (1 << VERT_ATTRIB_TEX4)#define VERT_BIT_TEX5     (1 << VERT_ATTRIB_TEX5)#define VERT_BIT_TEX6     (1 << VERT_ATTRIB_TEX6)#define VERT_BIT_TEX7     (1 << VERT_ATTRIB_TEX7)#define VERT_BIT_GENERIC0 (1 << VERT_ATTRIB_GENERIC0)#define VERT_BIT_GENERIC1 (1 << VERT_ATTRIB_GENERIC1)#define VERT_BIT_GENERIC2 (1 << VERT_ATTRIB_GENERIC2)#define VERT_BIT_GENERIC3 (1 << VERT_ATTRIB_GENERIC3)#define VERT_BIT_TEX(u)  (1 << (VERT_ATTRIB_TEX0 + (u)))#define VERT_BIT_GENERIC(g)  (1 << (VERT_ATTRIB_GENERIC0 + (g)))/*@}*//** * Indexes for vertex program result attributes *//*@{*/#define VERT_RESULT_HPOS 0#define VERT_RESULT_COL0 1#define VERT_RESULT_COL1 2#define VERT_RESULT_FOGC 3#define VERT_RESULT_TEX0 4#define VERT_RESULT_TEX1 5#define VERT_RESULT_TEX2 6#define VERT_RESULT_TEX3 7#define VERT_RESULT_TEX4 8#define VERT_RESULT_TEX5 9#define VERT_RESULT_TEX6 10#define VERT_RESULT_TEX7 11#define VERT_RESULT_PSIZ 12#define VERT_RESULT_BFC0 13#define VERT_RESULT_BFC1 14#define VERT_RESULT_MAX  15/*@}*//** * Indexes for fragment program input attributes. */enum{   FRAG_ATTRIB_WPOS = 0,   FRAG_ATTRIB_COL0 = 1,   FRAG_ATTRIB_COL1 = 2,   FRAG_ATTRIB_FOGC = 3,   FRAG_ATTRIB_TEX0 = 4,   FRAG_ATTRIB_TEX1 = 5,   FRAG_ATTRIB_TEX2 = 6,   FRAG_ATTRIB_TEX3 = 7,   FRAG_ATTRIB_TEX4 = 8,   FRAG_ATTRIB_TEX5 = 9,   FRAG_ATTRIB_TEX6 = 10,   FRAG_ATTRIB_TEX7 = 11,   FRAG_ATTRIB_MAX = 12};/** * Bitflags for fragment program input attributes. *//*@{*/#define FRAG_BIT_WPOS  (1 << FRAG_ATTRIB_WPOS)#define FRAG_BIT_COL0  (1 << FRAG_ATTRIB_COL0)#define FRAG_BIT_COL1  (1 << FRAG_ATTRIB_COL1)#define FRAG_BIT_FOGC  (1 << FRAG_ATTRIB_FOGC)#define FRAG_BIT_TEX0  (1 << FRAG_ATTRIB_TEX0)#define FRAG_BIT_TEX1  (1 << FRAG_ATTRIB_TEX1)#define FRAG_BIT_TEX2  (1 << FRAG_ATTRIB_TEX2)#define FRAG_BIT_TEX3  (1 << FRAG_ATTRIB_TEX3)#define FRAG_BIT_TEX4  (1 << FRAG_ATTRIB_TEX4)#define FRAG_BIT_TEX5  (1 << FRAG_ATTRIB_TEX5)#define FRAG_BIT_TEX6  (1 << FRAG_ATTRIB_TEX6)#define FRAG_BIT_TEX7  (1 << FRAG_ATTRIB_TEX7)#define FRAG_BITS_TEX_ANY (FRAG_BIT_TEX0|	\			   FRAG_BIT_TEX1|	\			   FRAG_BIT_TEX2|	\			   FRAG_BIT_TEX3|	\			   FRAG_BIT_TEX4|	\			   FRAG_BIT_TEX5|	\			   FRAG_BIT_TEX6|	\			   FRAG_BIT_TEX7)/*@}*//** * Fragment program results *//*@{*/#define FRAG_RESULT_COLR  0#define FRAG_RESULT_COLH  1#define FRAG_RESULT_DEPR  2#define FRAG_RESULT_MAX   3/*@}*//** * Indexes for all renderbuffers */enum {   BUFFER_FRONT_LEFT  = 0,  /* the four standard color buffers */   BUFFER_BACK_LEFT   = 1,   BUFFER_FRONT_RIGHT = 2,   BUFFER_BACK_RIGHT  = 3,   BUFFER_AUX0        = 4,  /* optional aux buffer */   BUFFER_AUX1        = 5,   BUFFER_AUX2        = 6,   BUFFER_AUX3        = 7,   BUFFER_DEPTH       = 8,   BUFFER_STENCIL     = 9,   BUFFER_ACCUM       = 10,   BUFFER_COLOR0      = 11, /* generic renderbuffers */   BUFFER_COLOR1      = 12,   BUFFER_COLOR2      = 13,   BUFFER_COLOR3      = 14,   BUFFER_COLOR4      = 15,   BUFFER_COLOR5      = 16,   BUFFER_COLOR6      = 17,   BUFFER_COLOR7      = 18,   BUFFER_COUNT       = 19};/** * Bit flags for all renderbuffers */#define BUFFER_BIT_FRONT_LEFT   (1 << BUFFER_FRONT_LEFT)#define BUFFER_BIT_BACK_LEFT    (1 << BUFFER_BACK_LEFT)#define BUFFER_BIT_FRONT_RIGHT  (1 << BUFFER_FRONT_RIGHT)#define BUFFER_BIT_BACK_RIGHT   (1 << BUFFER_BACK_RIGHT)#define BUFFER_BIT_AUX0         (1 << BUFFER_AUX0)#define BUFFER_BIT_AUX1         (1 << BUFFER_AUX1)#define BUFFER_BIT_AUX2         (1 << BUFFER_AUX2)#define BUFFER_BIT_AUX3         (1 << BUFFER_AUX3)#define BUFFER_BIT_DEPTH        (1 << BUFFER_DEPTH)#define BUFFER_BIT_STENCIL      (1 << BUFFER_STENCIL)#define BUFFER_BIT_ACCUM        (1 << BUFFER_ACCUM)#define BUFFER_BIT_COLOR0       (1 << BUFFER_COLOR0)#define BUFFER_BIT_COLOR1       (1 << BUFFER_COLOR1)#define BUFFER_BIT_COLOR2       (1 << BUFFER_COLOR2)#define BUFFER_BIT_COLOR3       (1 << BUFFER_COLOR3)#define BUFFER_BIT_COLOR4       (1 << BUFFER_COLOR4)#define BUFFER_BIT_COLOR5       (1 << BUFFER_COLOR5)#define BUFFER_BIT_COLOR6       (1 << BUFFER_COLOR6)#define BUFFER_BIT_COLOR7       (1 << BUFFER_COLOR7)/** * Mask of all the color buffer bits (but not accum). */#define BUFFER_BITS_COLOR  (BUFFER_BIT_FRONT_LEFT | \                            BUFFER_BIT_BACK_LEFT | \                            BUFFER_BIT_FRONT_RIGHT | \                            BUFFER_BIT_BACK_RIGHT | \                            BUFFER_BIT_AUX0 | \                            BUFFER_BIT_AUX1 | \                            BUFFER_BIT_AUX2 | \                            BUFFER_BIT_AUX3 | \                            BUFFER_BIT_COLOR0 | \                            BUFFER_BIT_COLOR1 | \                            BUFFER_BIT_COLOR2 | \                            BUFFER_BIT_COLOR3 | \                            BUFFER_BIT_COLOR4 | \                            BUFFER_BIT_COLOR5 | \                            BUFFER_BIT_COLOR6 | \                            BUFFER_BIT_COLOR7)/** * Data structure for color tables */struct gl_color_table{   GLenum InternalFormat;      /**< The user-specified format */   GLenum _BaseFormat;         /**< GL_ALPHA, GL_RGBA, GL_RGB, etc */   GLuint Size;           /**< number of entries (rows) in table */   GLvoid *Table;         /**< points to data of <Type> */   GLenum Type;           /**< GL_UNSIGNED_BYTE or GL_FLOAT */   GLubyte RedSize;   GLubyte GreenSize;   GLubyte BlueSize;   GLubyte AlphaSize;   GLubyte LuminanceSize;   GLubyte IntensitySize;};/** * \name Bit flags used for updating material values. *//*@{*/#define MAT_ATTRIB_FRONT_AMBIENT           0 #define MAT_ATTRIB_BACK_AMBIENT            1#define MAT_ATTRIB_FRONT_DIFFUSE           2 #define MAT_ATTRIB_BACK_DIFFUSE            3#define MAT_ATTRIB_FRONT_SPECULAR          4 #define MAT_ATTRIB_BACK_SPECULAR           5#define MAT_ATTRIB_FRONT_EMISSION          6#define MAT_ATTRIB_BACK_EMISSION           7#define MAT_ATTRIB_FRONT_SHININESS         8#define MAT_ATTRIB_BACK_SHININESS          9#define MAT_ATTRIB_FRONT_INDEXES           10#define MAT_ATTRIB_BACK_INDEXES            11#define MAT_ATTRIB_MAX                     12#define MAT_ATTRIB_AMBIENT(f)  (MAT_ATTRIB_FRONT_AMBIENT+(f))  #define MAT_ATTRIB_DIFFUSE(f)  (MAT_ATTRIB_FRONT_DIFFUSE+(f))  #define MAT_ATTRIB_SPECULAR(f) (MAT_ATTRIB_FRONT_SPECULAR+(f)) #define MAT_ATTRIB_EMISSION(f) (MAT_ATTRIB_FRONT_EMISSION+(f)) #define MAT_ATTRIB_SHININESS(f)(MAT_ATTRIB_FRONT_SHININESS+(f))#define MAT_ATTRIB_INDEXES(f)  (MAT_ATTRIB_FRONT_INDEXES+(f))  #define MAT_INDEX_AMBIENT  0#define MAT_INDEX_DIFFUSE  1#define MAT_INDEX_SPECULAR 2#define MAT_BIT_FRONT_AMBIENT         (1<<MAT_ATTRIB_FRONT_AMBIENT)#define MAT_BIT_BACK_AMBIENT          (1<<MAT_ATTRIB_BACK_AMBIENT)#define MAT_BIT_FRONT_DIFFUSE         (1<<MAT_ATTRIB_FRONT_DIFFUSE)#define MAT_BIT_BACK_DIFFUSE          (1<<MAT_ATTRIB_BACK_DIFFUSE)#define MAT_BIT_FRONT_SPECULAR        (1<<MAT_ATTRIB_FRONT_SPECULAR)#define MAT_BIT_BACK_SPECULAR         (1<<MAT_ATTRIB_BACK_SPECULAR)#define MAT_BIT_FRONT_EMISSION        (1<<MAT_ATTRIB_FRONT_EMISSION)#define MAT_BIT_BACK_EMISSION         (1<<MAT_ATTRIB_BACK_EMISSION)#define MAT_BIT_FRONT_SHININESS       (1<<MAT_ATTRIB_FRONT_SHININESS)#define MAT_BIT_BACK_SHININESS        (1<<MAT_ATTRIB_BACK_SHININESS)#define MAT_BIT_FRONT_INDEXES         (1<<MAT_ATTRIB_FRONT_INDEXES)#define MAT_BIT_BACK_INDEXES          (1<<MAT_ATTRIB_BACK_INDEXES)#define FRONT_MATERIAL_BITS	(MAT_BIT_FRONT_EMISSION | 	\				 MAT_BIT_FRONT_AMBIENT |	\				 MAT_BIT_FRONT_DIFFUSE | 	\				 MAT_BIT_FRONT_SPECULAR |	\				 MAT_BIT_FRONT_SHININESS | 	\				 MAT_BIT_FRONT_INDEXES)#define BACK_MATERIAL_BITS	(MAT_BIT_BACK_EMISSION |	\				 MAT_BIT_BACK_AMBIENT |		\				 MAT_BIT_BACK_DIFFUSE |		\				 MAT_BIT_BACK_SPECULAR |	\				 MAT_BIT_BACK_SHININESS |	\				 MAT_BIT_BACK_INDEXES)#define ALL_MATERIAL_BITS	(FRONT_MATERIAL_BITS | BACK_MATERIAL_BITS)/*@}*/#define EXP_TABLE_SIZE 512	/**< Specular exponent lookup table sizes */#define SHINE_TABLE_SIZE 256	/**< Material shininess lookup table sizes *//** * Material shininess lookup table. */struct gl_shine_tab{   struct gl_shine_tab *next, *prev;   GLfloat tab[SHINE_TABLE_SIZE+1];

⌨️ 快捷键说明

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