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

📄 skyfly.h

📁 学习c++必备
💻 H
字号:
/* * skyfly.h     $Revision: 1.3 $*/#ifdef _WIN32#pragma warning(disable : 4244)#endif/* buttons */#define ESCKEY          0#define RKEY            1#define PERIODKEY       2#define SPACEKEY        3#define DOWNARROWKEY    4#define UPARROWKEY      5#define LEFTARROWKEY    6#define RIGHTARROWKEY   7#define PAGEDOWNKEY     8#define PAGEUPKEY       9#define LEFTMOUSE       10#define MIDDLEMOUSE     11#define RIGHTMOUSE      12#define BUTCOUNT        13/* valuators */#define MOUSEX          0#define MOUSEY          1#define VALCOUNT        2#undef randomextern long random(void);#undef	MIN#undef	MAX#define MIN(a,b)        (((a)<(b)) ? (a) : (b))#define MAX(a,b)        (((a)>(b)) ? (a) : (b))#define RAD_TO_DEG                      (180/M_PI)#define IRND(x) ((int)((float)(x) * ((float)random()/(float)0x7fffffff)))#define M_PI            3.14159265358979323846#define NUM_PLANES                      20#define GRID_RANGE                      200             /* 200 kilometers */#define FOV                             (M_PI / 4.)     /* 45 degrees *//* * Light vector*/#define LX                              0.0     #define LY                              0.707#define LZ                              0.707#define FLOATS_PER_VERT_PAIR            16#define NBUFFERS    2#define SKY_CYCLOPS             0   #define SKY_DUALCHANNEL         1#define SKY_SINGLECHANNEL       2/* * perfobj flags*/#define PD_TEXTURE_BIND                         0#define PD_DRAW_PAPER_PLANE                     1#define PD_DRAW_TERRAIN_CELL                    2#define PD_PAPER_PLANE_MODE                     3#define PD_PAPER_PLANE_POS                      4#define PD_VIEWER_POS                           5#define PD_DRAW_CLOUDS                          6#define PD_END                                  0x3fff#define PLANES_START                            0#define PLANES_SECOND_PASS                      1#define PLANES_END                              2/*  * Offsets to data in perfobj_vert_t*/#define PD_V_POINT                      0#define PD_V_CPACK                      3#define PD_V_NORMAL                     4#define PD_V_COLOR                      8#define PD_V_TEX                        12#define PD_V_SIZE                       16/* * Padding ensures that vertex data remains quad-word aligned within struct*/typedef struct perfobj_vert_t {        float vert[3];        unsigned long vpad;        float normal[3];        unsigned long npad;        float color[3];        unsigned long cpad;        float texture[2];        unsigned long tpad[2]; } perfobj_vert_t;/* * A perfobj is a structure designed for fast rendering. Flags are separated * from vertex data to improve cacheing behavior. Typically the flags are * tokens which determine the drawing operation to perform and the vdata are * perfobj_vert_t's or other floating point data.*/typedef struct perfobj_t {        unsigned int    *flags;        float           *vdata;} perfobj_t;extern void drawperfobj( perfobj_t *perfptr );extern void putv3fdata( float *source, perfobj_vert_t *vertptr );extern void putn3fdata( float *source, perfobj_vert_t *vertptr );extern void putc3fdata( float *source, perfobj_vert_t *vertptr );extern void putt2fdata( float *source, perfobj_vert_t *vertptr );/* * This is the structure which contains the database. It is amalloc'ed * in shared memory so that forked processes can access it. Notice how * the flags and vertex data are separated to improve cacheing behavior.*/ typedef struct shared_data_struct {        /* objects */        perfobj_t       paper_plane_obj;        perfobj_t       paper_plane_start_obj;        perfobj_t       paper_plane_2ndpass_obj;        perfobj_t       paper_plane_end_obj;        perfobj_t       terrain_texture_obj;        perfobj_t       *terrain_cells;        perfobj_t       clouds_texture_obj;        perfobj_t       clouds_obj;        /* flags */        unsigned int    paper_plane_flags[2];        unsigned int    paper_plane_start_flags[3];        unsigned int    paper_plane_2ndpass_flags[3];        unsigned int    paper_plane_end_flags[3];        unsigned int    terrain_texture_flags[3];        unsigned int    **terrain_cell_flags;        unsigned int    clouds_texture_flags[3];        unsigned int    clouds_flags[2];        /* data */        perfobj_vert_t  paper_plane_verts[22];        perfobj_vert_t  **terrain_cell_verts;        perfobj_vert_t  clouds_verts[4];} shared_data;/* * See skyfly.c for comments*/extern shared_data      *SharedData;extern float            ScaleZ;extern int              CellDim;extern int              NumCells;extern int              GridDim;extern float            FarCull;extern float            XYScale, CellSize;extern int              Wxsize, Wysize;extern int              Init_pos;extern float            Init_x, Init_y, Init_z, Init_azimuth;extern float            far_cull;extern int              rgbmode;extern float            fog_params[4];extern int              dither, fog;extern int 				mipmap;/* Color index ramp info */extern int              sky_base, terr_base;extern int              plane_colors[3];#define SKY_BITS        4#define SKY_COLORS      (1 << SKY_BITS)#define TERR_BITS       4#define TERR_COLORS     (1 << TERR_BITS)#define PLANE_BITS      4#define PLANE_COLORS    (1 << PLANE_BITS)#define FOG_LEVELS      6#define SKY_HIGH        5.0fextern void set_fog(int enable);extern void set_dither(int enable);#define cosf(a)  	cos((float)a)#define sinf(a)  	sin((float)a)#define sqrtf(a)  	sqrt((float)a)#define expf(a)  	exp((float)a)

⌨️ 快捷键说明

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