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