📄 mcdrv.h
字号:
//
// GL_FOG_COLOR becomes fogColor
// GL_POINT_SMOOTH becomes pointSmoothEnable
//
// In addition, there are few multiple values that are accessed via a single
// GLenum. For example, GL_POLYGON_MODE returns both a front and a back
// polygon mode, so:
//
// GL_POLYGON_MODE becomes polygonModeFront *and* polygonModeBack
//
// Enable flags for enables field in MCDRENDERSTATE
#define MCD_ALPHA_TEST_ENABLE (1 << 0)
#define MCD_BLEND_ENABLE (1 << 1)
#define MCD_INDEX_LOGIC_OP_ENABLE (1 << 2)
#define MCD_DITHER_ENABLE (1 << 3)
#define MCD_DEPTH_TEST_ENABLE (1 << 4)
#define MCD_FOG_ENABLE (1 << 5)
#define MCD_LIGHTING_ENABLE (1 << 6)
#define MCD_COLOR_MATERIAL_ENABLE (1 << 7)
#define MCD_LINE_STIPPLE_ENABLE (1 << 8)
#define MCD_LINE_SMOOTH_ENABLE (1 << 9)
#define MCD_POINT_SMOOTH_ENABLE (1 << 10)
#define MCD_POLYGON_SMOOTH_ENABLE (1 << 11)
#define MCD_CULL_FACE_ENABLE (1 << 12)
#define MCD_POLYGON_STIPPLE_ENABLE (1 << 13)
#define MCD_SCISSOR_TEST_ENABLE (1 << 14)
#define MCD_STENCIL_TEST_ENABLE (1 << 15)
#define MCD_TEXTURE_1D_ENABLE (1 << 16)
#define MCD_TEXTURE_2D_ENABLE (1 << 17)
#define MCD_TEXTURE_GEN_S_ENABLE (1 << 18)
#define MCD_TEXTURE_GEN_T_ENABLE (1 << 19)
#define MCD_TEXTURE_GEN_R_ENABLE (1 << 20)
#define MCD_TEXTURE_GEN_Q_ENABLE (1 << 21)
#define MCD_NORMALIZE_ENABLE (1 << 22)
#define MCD_AUTO_NORMAL_ENABLE (1 << 23) // Not currently used
#define MCD_POLYGON_OFFSET_POINT_ENABLE (1 << 24)
#define MCD_POLYGON_OFFSET_LINE_ENABLE (1 << 25)
#define MCD_POLYGON_OFFSET_FILL_ENABLE (1 << 26)
#define MCD_COLOR_LOGIC_OP_ENABLE (1 << 27)
#define MCD_SPECULAR_FOG_ENABLE (1 << 29)
typedef struct _MCDRENDERSTATE {
// state enables
ULONG enables;
// texture state
BOOL textureEnabled;
// fog state
MCDCOLOR fogColor;
MCDFLOAT fogIndex;
MCDFLOAT fogDensity;
MCDFLOAT fogStart;
MCDFLOAT fogEnd;
ULONG fogMode;
// shading model state
ULONG shadeModel;
// point drawing state
MCDFLOAT pointSize;
// line drawing state
MCDFLOAT lineWidth;
USHORT lineStipplePattern;
SHORT lineStippleRepeat;
// polygon drawing state
ULONG cullFaceMode;
ULONG frontFace;
ULONG polygonModeFront;
ULONG polygonModeBack;
BYTE polygonStipple[4*32];
MCDFLOAT zOffsetFactor;
MCDFLOAT zOffsetUnits;
// stencil test state
BOOL stencilTestFunc;
USHORT stencilMask;
USHORT stencilRef;
ULONG stencilFail;
ULONG stencilDepthFail;
ULONG stencilDepthPass;
// alpha test state
ULONG alphaTestFunc;
MCDFLOAT alphaTestRef;
// depth test state
ULONG depthTestFunc;
// blend state
ULONG blendSrc;
ULONG blendDst;
// logic op state
ULONG logicOpMode;
// frame buffer control state
ULONG drawBuffer;
ULONG indexWritemask;
BOOL colorWritemask[4];
BOOL depthWritemask; // Called mask, but really a write enable
USHORT stencilWritemask;
MCDCOLOR colorClearValue;
MCDFLOAT indexClearValue;
MCDDOUBLE depthClearValue;
USHORT stencilClearValue;
// lighting
BOOL twoSided;
// clipping control
MCDCOORD userClipPlanes[MCD_MAX_USER_CLIP_PLANES];
// hints
ULONG perspectiveCorrectionHint;
ULONG pointSmoothHint;
ULONG lineSmoothHint;
ULONG polygonSmoothHint;
ULONG fogHint;
} MCDRENDERSTATE;
typedef struct _MCDSTATE_RENDER {
ULONG state; // must be MCD_RENDER_STATE
ULONG size; // must be sizeof(MCDSTATE_RENDER)
MCDRENDERSTATE allState;
} MCDSTATE_RENDER;
//
// MCDSTATEPIXEL is a variant of the MCDSTATE structure that is used
// to pass all pixel state (MCDPIXELSTATE) in a single command
// via MCDrvState.
//
// Note: for MCDrvDrawPixels, the MCDUNPACK structure can be overridden by
// the packed parameter to the function. If set, the source of the data is
// a display list and the structure of the data for that call may be assumed
// to be:
//
// swapEndian = FALSE
// lsbFirst = FALSE
// lineLength = width (from MCDrvDrawPixels parameter list)
// skipLines = 0
// skipPixels = 0
// alignment = 1
//
typedef struct _MCDPIXELTRANSFER {
MCDFLOAT redScale, greenScale, blueScale, alphaScale, depthScale;
MCDFLOAT redbias, greenBias, blueBias, aalphaBias, depthBias;
MCDFLOAT zoomX;
MCDFLOAT zoomY;
LONG indexShift;
LONG indexOffset;
BOOL mapColor;
BOOL mapStencil;
} MCDPIXELTRANSFER;
typedef struct _MCDPIXELPACK {
BYTE swapEndian;
BYTE lsbFirst;
LONG lineLength;
LONG skipLines;
LONG skipPixels;
LONG alignment;
LONG lReserved;
} MCDPIXELPACK;
typedef struct _MCDPIXELUNPACK {
BYTE swapEndian;
BYTE lsbFirst;
LONG lineLength;
LONG skipLines;
LONG skipPixels;
LONG alignment;
LONG lReserved;
} MCDPIXELUNPACK;
typedef struct _MCDPIXELSTATE {
MCDPIXELTRANSFER pixelTransferModes;
MCDPIXELPACK pixelPackModes;
MCDPIXELUNPACK pixelUnpackModes;
ULONG readBuffer;
MCDCOORD rasterPos;
} MCDPIXELSTATE;
typedef struct _MCDSTATE_PIXEL {
ULONG state; // must be MCD_PIXEL_STATE
ULONG size; // must be sizeof(MCDSTATE_PIXEL)
MCDPIXELSTATE pixelState;
} MCDSTATE_PIXEL;
//
// MCDSTATE_SCISSOR_RECT is a variant of the MCDSTATE structure
// that is used to pass the scissor rectangle to the MCD driver
// via MCDrvState.
//
typedef struct _MCDSTATE_SCISSOR_RECT {
ULONG state; // must be MCD_SCISSOR_RECT_STATE
ULONG size; // must be sizeof(MCDSTATE_SCISSOR_RECT)
RECTL scissorRect;
} MCDSTATE_SCISSOR_RECT;
//
// MCDSTATE_TEXENV is a variant of the MCDSTATE structure that is
// used to pass the texture environment state to the MCD driver
// via MCDrvState.
//
typedef struct _MCDTEXENVSTATE {
ULONG texEnvMode;
MCDCOLOR texEnvColor;
} MCDTEXENVSTATE;
typedef struct _MCDSTATE_TEXENV {
ULONG state; // must be MCD_TEXENV_STATE
ULONG size; // must be sizeof(MCDSTATE_TEXENV)
MCDTEXENVSTATE texEnvState;
} MCDSTATE_TEXENV;
//
// MCDVIEWPORT is used to pass viewport state to the MCD driver
// via MCDrvViewport.
typedef struct _MCDVIEWPORT {
MCDFLOAT xScale, xCenter;
MCDFLOAT yScale, yCenter;
MCDFLOAT zScale, zCenter;
} MCDVIEWPORT;
//
// Fine-grained state updates. Sent to a driver only if
// MCDRCINFO_FINE_GRAINED_STATE was returned on context creation.
//
// Enable state.
typedef struct _MCDENABLESTATE {
ULONG enables;
} MCDENABLESTATE;
// Texture enable state. Different from plain enables in that it
// indicates whether all texturing state is consistent and ready for
// texturing.
typedef struct _MCDTEXTUREENABLESTATE {
BOOL textureEnabled;
} MCDTEXTUREENABLESTATE;
// Fog state.
typedef struct _MCDFOGSTATE {
MCDCOLOR fogColor;
MCDFLOAT fogIndex;
MCDFLOAT fogDensity;
MCDFLOAT fogStart;
MCDFLOAT fogEnd;
ULONG fogMode;
} MCDFOGSTATE;
// Shading model state.
typedef struct _MCDSHADELMODELSTATE {
ULONG shadeModel;
} MCDSHADEMODELSTATE;
// Point drawing state.
typedef struct _MCDPOINTDRAWSTATE {
MCDFLOAT pointSize;
} MCDPOINTDRAWSTATE;
// Line drawing state.
typedef struct _MCDLINEDRAWSTATE {
MCDFLOAT lineWidth;
USHORT lineStipplePattern;
SHORT lineStippleRepeat;
} MCDLINEDRAWSTATE;
// Polygon drawing state.
typedef struct _MCDPOLYDRAWSTATE {
ULONG cullFaceMode;
ULONG frontFace;
ULONG polygonModeFront;
ULONG polygonModeBack;
BYTE polygonStipple[4*32];
MCDFLOAT zOffsetFactor;
MCDFLOAT zOffsetUnits;
} MCDPOLYDRAWSTATE;
// Alpha test state.
typedef struct _MCDALPHATESTSTATE {
ULONG alphaTestFunc;
MCDFLOAT alphaTestRef;
} MCDALPHATESTSTATE;
// Depth test state.
typedef struct _MCDDEPTHTESTSTATE {
ULONG depthTestFunc;
} MCDDEPTHTESTSTATE;
// Blend state.
typedef struct _MCDBLENDSTATE {
ULONG blendSrc;
ULONG blendDst;
} MCDBLENDSTATE;
// Logic op state.
typedef struct _MCDLOGICOPSTATE {
ULONG logicOpMode;
} MCDLOGICOPSTATE;
// Frame buffer control state.
typedef struct _MCDFRAMEBUFSTATE {
ULONG drawBuffer;
ULONG indexWritemask;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -