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