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

📄 ctl.h

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* ************************************************************************* *\
**
**    INTEL Corporation Proprietary Information
**
**    This listing is supplied under the terms of a license
**    agreement with INTEL Corporation and may not be copied
**    nor disclosed except in accordance with the terms of
**    that agreement.
**
**    Copyright (c) 2004 Intel Corporation.
**    All Rights Reserved.
**
** ************************************************************************* **
**	FILE: CTL.h
**	DESCRIPTION: Interface to the Common Transform & lighting Library
**
**	CREATED: September 14, 2004
**
\* ************************************************************************* */
#if !defined( __CTL_H__ )
#define __CTL_H__

#if defined( __cplusplus )
extern "C" {
#endif  /* __cplusplus */

#define __offsetof(s,m)  ((size_t)&((s*)0)->m)


/* ************************************************************************* *\
** Base types
\* ************************************************************************* */

typedef int CTLBOOL;
#define CTLTRUE  0x01
#define CTLFALSE 0x00

typedef unsigned char   CTLBYTE;
typedef unsigned char CTLU8;
typedef char CTLI8;

typedef unsigned short CTLU16;
typedef short CTLI16;

typedef unsigned int CTLU32;
typedef int CTLI32;

typedef float  CTLFLOAT;
typedef CTLI32 CTLFIXED;

#if defined( PROFILE_COMMON_LITE )
// Common-Lite profile uses fixed point
typedef CTLFIXED  CTLVALUE;

#elif defined( PROFILE_COMMON )
// Common profile uses floating point
typedef CTLFLOAT  CTLVALUE;

#else
#error Profile type not defined!
#endif  /* PROFILE_COMMON(LITE) */

// State handle
typedef void* CTLHANDLE;
#define CTLHANDLE_NULL ((CTLHANDLE)0)

// Maximum Num Of Texture Units
#define CTL_MAX_TEXTURE_UNITS  2

// Max num of lights supported
#define CTLLIGHT_MAX_NUM       8


/*****************************************************************************
    Matrix definition 
******************************************************************************/
typedef struct _CTL_MATRIX44
   {
   CTLVALUE m11, m12, m13, m14; // Column 1
   CTLVALUE m21, m22, m23, m24; // Column 2
   CTLVALUE m31, m32, m33, m34; // Column 3
   CTLVALUE m41, m42, m43, m44; // Column 4
   } CTLMATRIX44;


/* ************************************************************************* *\
** Vector definitions
\* ************************************************************************* */
typedef struct _CTL_VECTOR4
   {
   CTLVALUE x, y, z, w;

   } CTLVECTOR4;


typedef struct _CTL_VECTOR3
   {
   CTLVALUE x, y, z;

   } CTLVECTOR3;


typedef struct _CTL_VECTOR2
   {
   CTLVALUE x, y;

   } CTLVECTOR2;


/* ************************************************************************* *\
** Color definitions
\* ************************************************************************* */
typedef struct _CTL_COLOR4
   {
   CTLVALUE r, g, b, a;

   } CTLCOLOR4;


/* ************************************************************************* *\
** Enumerations
\* ************************************************************************* */

// Vertex Array types
// maintain this ordering as these values are also used as array indices
typedef enum _ARRAY_TYPE
   {
   CTLATYPE_VERTEX = 0,
   CTLATYPE_NORMAL,
   CTLATYPE_COLOR,
   CTLATYPE_TEXCOORD0,
   CTLATYPE_TEXCOORD1,

   } CTL_ARRAY_TYPE;


/*****************************************************************************
    Data type enumeration 
    maintain this ordering as these values are also used as array indices
******************************************************************************/
typedef enum _CTL_ARRAY_FORMAT
   {
   CTLAFORMAT_NONE = 0,
   CTLAFORMAT_FIXED,
   CTLAFORMAT_FLOAT,
   CTLAFORMAT_INT16,
   CTLAFORMAT_INT8,
   CTLAFORMAT_UINT8,
   CTLAFORMAT_PACKED,

   } CTL_ARRAY_FORMAT;

// Color source
typedef enum _COLOR_SOURCE
   {
   CTLSOURCE_COLOR_CONSTANT = 0,
   CTLSOURCE_COLOR_MATERIAL,

   } CTL_COLOR_SOURCE;


/*****************************************************************************
    Cull mode enumeration 
******************************************************************************/
typedef enum _CULL_MODE 
   { 
   CTLCULL_NONE = 0, 
   CTLCULL_CCW, 
   CTLCULL_CW, 

   } CTL_CULL_MODE;


/*****************************************************************************
    Fog mode enumeration 
******************************************************************************/
typedef enum _FOG_MODE 
   { 
   CTLFOG_NONE = 0, 
   CTLFOG_LINEAR, 
   CTLFOG_EXP, 
   CTLFOG_EXP2, 

   } CTL_FOG_MODE;


/*****************************************************************************
    Light type enumeration 
    maintain this ordering as these values are also used as array indices
******************************************************************************/
typedef enum _LIGHT_TYPE 
   { 
   CTLLIGHT_DIRECTIONAL = 0, 
   CTLLIGHT_POINT, 
   CTLLIGHT_SPOT, 

   } CTL_LIGHT_TYPE;


/*****************************************************************************
    Primitive type enumeration 
******************************************************************************/
typedef enum _PRIMITIVE_TYPE
   {
   CTLPRIMITIVE_POINTS = 0,

   CTLPRIMITIVE_LINELIST,
   CTLPRIMITIVE_LINESTRIP,
   CTLPRIMITIVE_LINELOOP,

   CTLPRIMITIVE_TRILIST,
   CTLPRIMITIVE_TRISTRIP,
   CTLPRIMITIVE_TRIFAN,

   } CTL_PRIMITIVE_TYPE;


/*****************************************************************************
    Profile variable enumeration 
******************************************************************************/
typedef enum _PROFILEVAR
   {
   // variable id                         argument type
   CTLPROFILE_VERTICES_SUBMITTED,         // value
   
   CTLPROFILE_PRIMITIVES_SUBMITTED,       // value
   CTLPROFILE_PRIMITIVES_CULLED,          // value
   CTLPROFILE_PRIMITIVES_CLIPPED,         // value
   CTLPROFILE_PRIMITIVES_RASTERIZED,      // value

   CTLPROFILE_NUM_CALLS_DRAWPRIMITIVES,   // value

   } CTL_PROFILEVAR;


/*****************************************************************************
    Raster variable enumeration 
******************************************************************************/
typedef enum _RASTERVAR
   {
   // variable id             argument type
   CTLRASTER_HANDLE = 0,      // handle

   } CTL_RASTERVAR;

// Rotation angles
typedef enum _ROTATION
   {
   CTLROTATION_0 = 0,
   CTLROTATION_90,
   CTLROTATION_180,
   CTLROTATION_270,

   } CTL_ROTATION;


/*****************************************************************************
    Shade mode enumeration 
******************************************************************************/
typedef enum _SHADE_MODE
   {
   CTLSHADE_FLAT = 0,
   CTLSHADE_SMOOTH,

   } CTL_SHADE_MODE;



/*****************************************************************************
    State variable enumeration 
******************************************************************************/
typedef enum _STATEVAR 
   {
   // variable id             argument type
   CTLSTATE_COLOR_CURRENT = 0,// CTLCOLOR4
   CTLSTATE_COLOR_SOURCE,     // one of CTL_COLOR_SOURCE

   CTLSTATE_CULL_MODE,        // one of CTL_CULL_MODE

   CTLSTATE_FOG_ENABLE,       // enable (disable = 0, enable = everything else)
   CTLSTATE_FOG_MODE,         // one of CTL_FOG_MODE
   CTLSTATE_FOG_COLOR,        // CTLCOLOR4
   CTLSTATE_FOG_DENSITY,      // value (fixed or float, depends on model)
   CTLSTATE_FOG_START,        // value
   CTLSTATE_FOG_END,          // value

   CTLSTATE_LIGHT_AMBIENT,    // color
   CTLSTATE_LIGHT_ENABLE,     // enable
   CTLSTATE_LIGHT_TWOSIDED,   // boolean (false = 0, true = everything else)
   CTLSTATE_DIFFUSE,          // current diffuse color

   CTLSTATE_LINEWIDTH,        // value

   CTLSTATE_POINTSIZE,        // value

   CTLSTATE_PROFILE_ENABLE,   // enable
   CTLSTATE_PROFILE_PROC,     // proc address

   CTLSTATE_NORMAL_CURRENT,   // CTLVECTOR3
   CTLSTATE_NORMAL_INVERT,    // boolean
   CTLSTATE_NORMAL_NORMALIZE, // boolean
   CTLSTATE_RESCALE_NORMAL,   // whether to rescale all normals
   CTLSTATE_FLIP_2SIDES,      // flip two sides (for two-sided lighting)

   CTLSTATE_SCREEN_DIMS,      // value, value
   CTLSTATE_SCREEN_ROTATION,  // one of CTL_ROTATION

   CTLSTATE_SHADE_MODE,       // one of CTL_SHADE_MODE

   CTLSTATE_COLOR_ARRAY_ENABLE,
   CTLSTATE_NORMAL_ARRAY_ENABLE,
   CTLSTATE_TRANSFORM_TEX1,   // boolean
   CTLSTATE_TRANSFORM_TEX2,   // boolean

   } CTL_STATEVAR;
  


/*****************************************************************************
    Transformation type enumeration 
******************************************************************************/
typedef enum _TRANSFORM_TYPE
   {
   CTLTRANSFORM_VIEW = 0,     // model view matrix
   CTLTRANSFORM_PROJECTION,   // projection matrix
   CTLTRANSFORM_DEVICE,       // device matrix (screen rotations)

   CTLTRANSFORM_TEX1,         // texture 1 trasnform
   CTLTRANSFORM_TEX2,         // texture 2 transform

   } CTL_TRANSFORM_TYPE;

/* ************************************************************************* *\
** Structure definitions
\* ************************************************************************* */

/*****************************************************************************
    Light structure definition
******************************************************************************/
typedef struct _LIGHT
   {
/*00*/ CTL_LIGHT_TYPE eType;

/*04*/ CTLVECTOR4 sPosition;
/*14*/ CTLVECTOR3 sDirection;

/*20*/ CTLCOLOR4 sAmbient;
/*30*/ CTLCOLOR4 sDiffuse;
/*40*/ CTLCOLOR4 sSpecular;

/*50*/ CTLVALUE SpotExponent;
/*54*/ CTLVALUE SpotCutoff;

/*58*/ CTLVALUE Attenuation[3];

/*64*/ CTLU32 Pad;
/*68*/

   } CTL_LIGHT;


/*****************************************************************************
    Material structure definition
******************************************************************************/
typedef struct _MATERIAL
   {
/*00*/ CTLCOLOR4 sAmbient;
/*10*/ CTLCOLOR4 sDiffuse;
/*20*/ CTLCOLOR4 sSpecular;

/*30*/ CTLCOLOR4 sEmissive;

/*40*/ CTLVALUE  Power;

/*44*/ CTLU32 Pad;
/*48*/

   } CTL_MATERIAL;


/*****************************************************************************
    Viewport structure definition 
******************************************************************************/
typedef struct _VIEWPORT
   {
/*00*/ CTLI32   i32X, i32Y;          // top-left corner
/*08*/ CTLU32   u32Width, u32Height; // dimensions
/*10*/ CTLVALUE Near, Far;           // clip planes
/*18*/

   } CTL_VIEWPORT;


/*****************************************************************************
    Vertex array definition 
******************************************************************************/
typedef struct _ARRAY
{
    // Pointer to the first component of the first array element
    CTLBYTE        *pPointer;
    
    // Stride (in bytes) between consecutive array elements
    CTLU32          u32Stride;

⌨️ 快捷键说明

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