dos3d
diff src/mglrast.c @ 3:0e781cc43178
adding textures
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Mon, 21 Nov 2011 10:16:09 +0200 |
parents | f04884489bad |
children | bce78aaafc68 |
line diff
1.1 --- a/src/mglrast.c Mon Nov 21 10:15:37 2011 +0200 1.2 +++ b/src/mglrast.c Mon Nov 21 10:16:09 2011 +0200 1.3 @@ -32,6 +32,7 @@ 1.4 #define SCAN_LINE scan_line_flat 1.5 #undef INTERP_DEPTH 1.6 #undef INTERP_ENERGY 1.7 +#undef INTERP_TEX 1.8 #include "scantmpl.h" 1.9 #undef SCAN_EDGE 1.10 #undef SCAN_LINE 1.11 @@ -40,6 +41,7 @@ 1.12 #define SCAN_LINE scan_line_z 1.13 #define INTERP_DEPTH 1.14 #undef INTERP_ENERGY 1.15 +#undef INTERP_TEX 1.16 #include "scantmpl.h" 1.17 #undef SCAN_EDGE 1.18 #undef SCAN_LINE 1.19 @@ -48,6 +50,7 @@ 1.20 #define SCAN_LINE scan_line_e 1.21 #undef INTERP_DEPTH 1.22 #define INTERP_ENERGY 1.23 +#undef INTERP_TEX 1.24 #include "scantmpl.h" 1.25 #undef SCAN_EDGE 1.26 #undef SCAN_LINE 1.27 @@ -56,10 +59,48 @@ 1.28 #define SCAN_LINE scan_line_ze 1.29 #define INTERP_DEPTH 1.30 #define INTERP_ENERGY 1.31 +#undef INTERP_TEX 1.32 #include "scantmpl.h" 1.33 #undef SCAN_EDGE 1.34 #undef SCAN_LINE 1.35 1.36 +#define SCAN_EDGE scan_edge_t 1.37 +#define SCAN_LINE scan_line_t 1.38 +#undef INTERP_DEPTH 1.39 +#undef INTERP_ENERGY 1.40 +#define INTERP_TEX 1.41 +#include "scantmpl.h" 1.42 +#undef SCAN_EDGE 1.43 +#undef SCAN_LINE 1.44 + 1.45 +#define SCAN_EDGE scan_edge_zt 1.46 +#define SCAN_LINE scan_line_zt 1.47 +#define INTERP_DEPTH 1.48 +#undef INTERP_ENERGY 1.49 +#define INTERP_TEX 1.50 +#include "scantmpl.h" 1.51 +#undef SCAN_EDGE 1.52 +#undef SCAN_LINE 1.53 + 1.54 +#define SCAN_EDGE scan_edge_et 1.55 +#define SCAN_LINE scan_line_et 1.56 +#undef INTERP_DEPTH 1.57 +#define INTERP_ENERGY 1.58 +#define INTERP_TEX 1.59 +#include "scantmpl.h" 1.60 +#undef SCAN_EDGE 1.61 +#undef SCAN_LINE 1.62 + 1.63 +#define SCAN_EDGE scan_edge_zet 1.64 +#define SCAN_LINE scan_line_zet 1.65 +#define INTERP_DEPTH 1.66 +#define INTERP_ENERGY 1.67 +#define INTERP_TEX 1.68 +#include "scantmpl.h" 1.69 +#undef SCAN_EDGE 1.70 +#undef SCAN_LINE 1.71 + 1.72 + 1.73 static void (*scan_edge)(struct vertex*, struct vertex*); 1.74 static void (*scan_line)(int, unsigned char*); 1.75 1.76 @@ -91,19 +132,32 @@ 1.77 void mgl_rast_prepare(void) 1.78 { 1.79 static void (*sedge[])(struct vertex*, struct vertex*) = { 1.80 - scan_edge_flat, /* 00 */ 1.81 - scan_edge_z, /* 01 */ 1.82 - scan_edge_e, /* 10 */ 1.83 - scan_edge_ze /* 11 */ 1.84 + /* tez */ 1.85 + scan_edge_flat, /* 000 */ 1.86 + scan_edge_z, /* 001 */ 1.87 + scan_edge_e, /* 010 */ 1.88 + scan_edge_ze, /* 011 */ 1.89 + scan_edge_t, /* 100 */ 1.90 + scan_edge_zt, /* 101 */ 1.91 + scan_edge_et, /* 110 */ 1.92 + scan_edge_zet /* 111 */ 1.93 }; 1.94 static void (*sline[])(int, unsigned char*) = { 1.95 - scan_line_flat, /* 00 */ 1.96 - scan_line_z, /* 01 */ 1.97 - scan_line_e, /* 10 */ 1.98 - scan_line_ze /* 11 */ 1.99 + /* tez */ 1.100 + scan_line_flat, /* 000 */ 1.101 + scan_line_z, /* 001 */ 1.102 + scan_line_e, /* 010 */ 1.103 + scan_line_ze, /* 011 */ 1.104 + scan_line_t, /* 100 */ 1.105 + scan_line_zt, /* 101 */ 1.106 + scan_line_et, /* 110 */ 1.107 + scan_line_zet /* 111 */ 1.108 }; 1.109 int bits = 0; 1.110 1.111 + if((st->flags & MGL_TEXTURE_2D) && st->tex.pixels) { 1.112 + bits |= 4; 1.113 + } 1.114 if(st->flags & MGL_SMOOTH) { 1.115 bits |= 2; 1.116 }