gpmark
annotate 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 |
rev | line source |
---|---|
nuclear@0 | 1 #ifndef ENGINE3D_H |
nuclear@0 | 2 #define ENGINE3D_H |
nuclear@0 | 3 |
nuclear@0 | 4 #define MAXDATA 262144 |
nuclear@0 | 5 |
nuclear@0 | 6 #define POINTS 1 |
nuclear@0 | 7 #define WIRE 2 |
nuclear@0 | 8 #define FLAT 4 |
nuclear@0 | 9 #define GOURAUD 8 |
nuclear@0 | 10 #define ENVMAP 16 |
nuclear@0 | 11 #define TEXTURE 32 |
nuclear@0 | 12 |
nuclear@0 | 13 #define ZBUFFER 256 |
nuclear@0 | 14 |
nuclear@0 | 15 #define LIGHTVIEW 0 |
nuclear@0 | 16 #define LIGHTMOVE 1 |
nuclear@0 | 17 |
nuclear@0 | 18 #define PI 3.14151693 |
nuclear@0 | 19 #define D2R 180.0/PI |
nuclear@0 | 20 |
nuclear@0 | 21 typedef struct vector3d |
nuclear@0 | 22 { |
nuclear@0 | 23 int x; |
nuclear@0 | 24 int y; |
nuclear@0 | 25 int z; |
nuclear@0 | 26 } vector3d; |
nuclear@0 | 27 |
nuclear@0 | 28 typedef struct point2d |
nuclear@0 | 29 { |
nuclear@0 | 30 int x; |
nuclear@0 | 31 int y; |
nuclear@0 | 32 unsigned short c; |
nuclear@0 | 33 } point2d; |
nuclear@0 | 34 |
nuclear@0 | 35 |
nuclear@0 | 36 typedef struct point3d |
nuclear@0 | 37 { |
nuclear@0 | 38 int x; |
nuclear@0 | 39 int y; |
nuclear@0 | 40 int z; |
nuclear@0 | 41 unsigned short c; |
nuclear@0 | 42 } point3d; |
nuclear@0 | 43 |
nuclear@0 | 44 typedef struct tcord |
nuclear@0 | 45 { |
nuclear@0 | 46 int u, v; |
nuclear@0 | 47 } tcord; |
nuclear@0 | 48 |
nuclear@0 | 49 typedef struct poly2d |
nuclear@0 | 50 { |
nuclear@0 | 51 int p0; tcord tc0; |
nuclear@0 | 52 int p1; tcord tc1; |
nuclear@0 | 53 int p2; tcord tc2; |
nuclear@0 | 54 int c; |
nuclear@0 | 55 int m; |
nuclear@0 | 56 } poly2d; |
nuclear@0 | 57 |
nuclear@0 | 58 |
nuclear@0 | 59 typedef struct line2d |
nuclear@0 | 60 { |
nuclear@0 | 61 int p0; |
nuclear@0 | 62 int p1; |
nuclear@0 | 63 int c; |
nuclear@0 | 64 }line2d; |
nuclear@0 | 65 |
nuclear@0 | 66 |
nuclear@0 | 67 typedef struct rot3d |
nuclear@0 | 68 { |
nuclear@0 | 69 float x; |
nuclear@0 | 70 float y; |
nuclear@0 | 71 float z; |
nuclear@0 | 72 }rot3d; |
nuclear@0 | 73 |
nuclear@0 | 74 |
nuclear@0 | 75 typedef struct pos3d |
nuclear@0 | 76 { |
nuclear@0 | 77 float x; |
nuclear@0 | 78 float y; |
nuclear@0 | 79 float z; |
nuclear@0 | 80 }pos3d; |
nuclear@0 | 81 |
nuclear@0 | 82 |
nuclear@0 | 83 typedef struct object3d |
nuclear@0 | 84 { |
nuclear@0 | 85 int npts, npls, nlns; |
nuclear@0 | 86 |
nuclear@0 | 87 point3d *point; |
nuclear@0 | 88 poly2d *poly; |
nuclear@0 | 89 line2d *line; |
nuclear@0 | 90 |
nuclear@0 | 91 vector3d *normal; |
nuclear@0 | 92 vector3d *pt_normal; |
nuclear@0 | 93 |
nuclear@0 | 94 rot3d rot; |
nuclear@0 | 95 pos3d pos; |
nuclear@0 | 96 }object3d; |
nuclear@0 | 97 |
nuclear@0 | 98 vector3d CrossProduct(vector3d v1, vector3d v2); |
nuclear@0 | 99 int DotProduct(vector3d v1, vector3d v2); |
nuclear@0 | 100 vector3d Normalize(vector3d v); |
nuclear@0 | 101 vector3d NegVec(vector3d v); |
nuclear@0 | 102 |
nuclear@0 | 103 void Calc3d(object3d *obj); |
nuclear@0 | 104 |
nuclear@0 | 105 void rotate3d (object3d *obj); |
nuclear@0 | 106 void translate3d (object3d *obj); |
nuclear@0 | 107 void project3d (object3d *obj); |
nuclear@0 | 108 |
nuclear@0 | 109 void rotate3d_normals (object3d *obj); |
nuclear@0 | 110 void rotate3d_pt_normals (object3d *obj); |
nuclear@0 | 111 |
nuclear@0 | 112 void CalcPointColor(object3d *obj); |
nuclear@0 | 113 void CalcPolyColor(object3d *obj); |
nuclear@0 | 114 |
nuclear@0 | 115 void quicksort (int lo, int hi, int data[]); |
nuclear@0 | 116 |
nuclear@0 | 117 #endif |