gpmark
diff src/engine3d.h @ 0:5019d031b485
initial commit
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Wed, 05 Jun 2013 22:33:37 +0300 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/engine3d.h Wed Jun 05 22:33:37 2013 +0300 1.3 @@ -0,0 +1,117 @@ 1.4 +#ifndef ENGINE3D_H 1.5 +#define ENGINE3D_H 1.6 + 1.7 +#define MAXDATA 262144 1.8 + 1.9 +#define POINTS 1 1.10 +#define WIRE 2 1.11 +#define FLAT 4 1.12 +#define GOURAUD 8 1.13 +#define ENVMAP 16 1.14 +#define TEXTURE 32 1.15 + 1.16 +#define ZBUFFER 256 1.17 + 1.18 +#define LIGHTVIEW 0 1.19 +#define LIGHTMOVE 1 1.20 + 1.21 +#define PI 3.14151693 1.22 +#define D2R 180.0/PI 1.23 + 1.24 +typedef struct vector3d 1.25 +{ 1.26 + int x; 1.27 + int y; 1.28 + int z; 1.29 +} vector3d; 1.30 + 1.31 +typedef struct point2d 1.32 +{ 1.33 + int x; 1.34 + int y; 1.35 + unsigned short c; 1.36 +} point2d; 1.37 + 1.38 + 1.39 +typedef struct point3d 1.40 +{ 1.41 + int x; 1.42 + int y; 1.43 + int z; 1.44 + unsigned short c; 1.45 +} point3d; 1.46 + 1.47 +typedef struct tcord 1.48 +{ 1.49 + int u, v; 1.50 +} tcord; 1.51 + 1.52 +typedef struct poly2d 1.53 +{ 1.54 + int p0; tcord tc0; 1.55 + int p1; tcord tc1; 1.56 + int p2; tcord tc2; 1.57 + int c; 1.58 + int m; 1.59 +} poly2d; 1.60 + 1.61 + 1.62 +typedef struct line2d 1.63 +{ 1.64 + int p0; 1.65 + int p1; 1.66 + int c; 1.67 +}line2d; 1.68 + 1.69 + 1.70 +typedef struct rot3d 1.71 +{ 1.72 + float x; 1.73 + float y; 1.74 + float z; 1.75 +}rot3d; 1.76 + 1.77 + 1.78 +typedef struct pos3d 1.79 +{ 1.80 + float x; 1.81 + float y; 1.82 + float z; 1.83 +}pos3d; 1.84 + 1.85 + 1.86 +typedef struct object3d 1.87 +{ 1.88 + int npts, npls, nlns; 1.89 + 1.90 + point3d *point; 1.91 + poly2d *poly; 1.92 + line2d *line; 1.93 + 1.94 + vector3d *normal; 1.95 + vector3d *pt_normal; 1.96 + 1.97 + rot3d rot; 1.98 + pos3d pos; 1.99 +}object3d; 1.100 + 1.101 +vector3d CrossProduct(vector3d v1, vector3d v2); 1.102 +int DotProduct(vector3d v1, vector3d v2); 1.103 +vector3d Normalize(vector3d v); 1.104 +vector3d NegVec(vector3d v); 1.105 + 1.106 +void Calc3d(object3d *obj); 1.107 + 1.108 +void rotate3d (object3d *obj); 1.109 +void translate3d (object3d *obj); 1.110 +void project3d (object3d *obj); 1.111 + 1.112 +void rotate3d_normals (object3d *obj); 1.113 +void rotate3d_pt_normals (object3d *obj); 1.114 + 1.115 +void CalcPointColor(object3d *obj); 1.116 +void CalcPolyColor(object3d *obj); 1.117 + 1.118 +void quicksort (int lo, int hi, int data[]); 1.119 + 1.120 +#endif