t3dlib8.h
上传用户:husern
上传日期:2018-01-20
资源大小:42486k
文件大小:6k
源码类别:

游戏

开发平台:

Visual C++

  1. // T3DLIB8.H - header file for T3DLIB8.H
  2. // watch for multiple inclusions
  3. #ifndef T3DLIB8
  4. #define T3DLIB8
  5. // DEFINES //////////////////////////////////////////////////////////////////
  6. // general clipping flags for polygons
  7. #define CLIP_POLY_X_PLANE           0x0001 // cull on the x clipping planes
  8. #define CLIP_POLY_Y_PLANE           0x0002 // cull on the y clipping planes
  9. #define CLIP_POLY_Z_PLANE           0x0004 // cull on the z clipping planes
  10. #define CLIP_OBJECT_XYZ_PLANES      (CULL_OBJECT_X_PLANE | CULL_OBJECT_Y_PLANE | CULL_OBJECT_Z_PLANE)
  11. // defines for light types version 2.0
  12. #define LIGHTV2_ATTR_AMBIENT      0x0001    // basic ambient light
  13. #define LIGHTV2_ATTR_INFINITE     0x0002    // infinite light source
  14. #define LIGHTV2_ATTR_DIRECTIONAL  0x0002    // infinite light source (alias)
  15. #define LIGHTV2_ATTR_POINT        0x0004    // point light source
  16. #define LIGHTV2_ATTR_SPOTLIGHT1   0x0008    // spotlight type 1 (simple)
  17. #define LIGHTV2_ATTR_SPOTLIGHT2   0x0010    // spotlight type 2 (complex)
  18. #define LIGHTV2_STATE_ON          1         // light on
  19. #define LIGHTV2_STATE_OFF         0         // light off
  20. // transformation control flags
  21. #define TRANSFORM_COPY_LOCAL_TO_TRANS   3 // copy data as is, no transform
  22. // TYPES ///////////////////////////////////////////////////////////////////
  23. // version 2.0 of light structure
  24. typedef struct LIGHTV2_TYP
  25. {
  26. int state; // state of light
  27. int id;    // id of light
  28. int attr;  // type of light, and extra qualifiers
  29. RGBAV1 c_ambient;   // ambient light intensity
  30. RGBAV1 c_diffuse;   // diffuse light intensity
  31. RGBAV1 c_specular;  // specular light intensity
  32. POINT4D  pos;       // position of light world/transformed
  33. POINT4D  tpos;
  34. VECTOR4D dir;       // direction of light world/transformed
  35. VECTOR4D tdir;
  36. float kc, kl, kq;   // attenuation factors
  37. float spot_inner;   // inner angle for spot light
  38. float spot_outer;   // outer angle for spot light
  39. float pf;           // power factor/falloff for spot lights
  40. int   iaux1, iaux2; // auxiliary vars for future expansion
  41. float faux1, faux2;
  42. void *ptr;
  43. } LIGHTV2, *LIGHTV2_PTR;
  44. // CLASSES /////////////////////////////////////////////////////////////////
  45. // MACROS ///////////////////////////////////////////////////////////////////
  46. // TYPES ///////////////////////////////////////////////////////////////////
  47. // EXTERNALS ///////////////////////////////////////////////////////////////
  48. extern LIGHTV2 lights2[MAX_LIGHTS];  // lights in system
  49. // PROTOTYPES //////////////////////////////////////////////////////////////
  50. void Clip_Polys_RENDERLIST4DV2(RENDERLIST4DV2_PTR rend_list, CAM4DV1_PTR cam, int clip_flags);
  51. int Generate_Terrain_OBJECT4DV2(OBJECT4DV2_PTR obj,     // pointer to object
  52.                                 float twidth,            // width in world coords on x-axis
  53.                                 float theight,           // height (length) in world coords on z-axis
  54.                                 float vscale,           // vertical scale of terrain
  55.                                 char *height_map_file,  // filename of height bitmap encoded in 256 colors
  56.                                 char *texture_map_file, // filename of texture map
  57.                                 int rgbcolor,           // color of terrain if no texture        
  58.                                 VECTOR4D_PTR pos,       // initial position
  59.                                 VECTOR4D_PTR rot,       // initial rotations
  60.                                 int poly_attr);         // the shading attributes we would like
  61. int Light_OBJECT4DV2_World2_16(OBJECT4DV2_PTR obj,  // object to process
  62.                              CAM4DV1_PTR cam,     // camera position
  63.                              LIGHTV2_PTR lights,  // light list (might have more than one)
  64.                              int max_lights);     // maximum lights in list
  65. int Light_OBJECT4DV2_World2(OBJECT4DV2_PTR obj,  // object to process
  66.                            CAM4DV1_PTR cam,     // camera position
  67.                            LIGHTV2_PTR lights,  // light list (might have more than one)
  68.                            int max_lights);      // maximum lights in list
  69. int Light_RENDERLIST4DV2_World2(RENDERLIST4DV2_PTR rend_list,  // list to process
  70.                                  CAM4DV1_PTR cam,     // camera position
  71.                                  LIGHTV2_PTR lights,  // light list (might have more than one)
  72.                                  int max_lights);     // maximum lights in list
  73. int Light_RENDERLIST4DV2_World2_16(RENDERLIST4DV2_PTR rend_list,  // list to process
  74.                                  CAM4DV1_PTR cam,     // camera position
  75.                                  LIGHTV2_PTR lights,  // light list (might have more than one)
  76.                                  int max_lights);     // maximum lights in list
  77. // lighting system
  78. int Init_Light_LIGHTV2(LIGHTV2_PTR lights,       // light array to work with (new)
  79.                        int           index,      // index of light to create (0..MAX_LIGHTS-1)
  80.                        int          _state,      // state of light
  81.                        int          _attr,       // type of light, and extra qualifiers
  82.                        RGBAV1       _c_ambient,  // ambient light intensity
  83.                        RGBAV1       _c_diffuse,  // diffuse light intensity
  84.                        RGBAV1       _c_specular, // specular light intensity
  85.                        POINT4D_PTR  _pos,        // position of light
  86.                        VECTOR4D_PTR _dir,        // direction of light
  87.                        float        _kc,         // attenuation factors
  88.                        float        _kl, 
  89.                        float        _kq, 
  90.                        float        _spot_inner, // inner angle for spot light
  91.                        float        _spot_outer, // outer angle for spot light
  92.                        float        _pf);        // power factor/falloff for spot lights
  93. int Reset_Lights_LIGHTV2(LIGHTV2_PTR lights,       // light array to work with (new)
  94.                          int max_lights);          // number of lights in system
  95. void Transform_LIGHTSV2(LIGHTV2_PTR lights,  // array of lights to transform
  96.                         int num_lights,      // number of lights to transform
  97.                         MATRIX4X4_PTR mt,    // transformation matrix
  98.                         int coord_select);   // selects coords to transform
  99. #endif
  100.