12 #include "zfeatures.h"
15 #define POLYGON_MAX_VERTEX 16
18 #define MAX_SPECULAR_BUFFERS 8
20 #define SPECULAR_BUFFER_SIZE 1024
22 #define SPECULAR_BUFFER_RESOLUTION 1024
25 #define MAX_MODELVIEW_STACK_DEPTH 32
26 #define MAX_PROJECTION_STACK_DEPTH 8
27 #define MAX_TEXTURE_STACK_DEPTH 8
28 #define MAX_NAME_STACK_DEPTH 64
29 #define MAX_TEXTURE_LEVELS 11
32 #define VERTEX_HASH_SIZE 1031
34 #define MAX_DISPLAY_LISTS 1024
35 #define OP_BUFFER_MAX_SIZE 512
37 #define TGL_OFFSET_FILL 0x1
38 #define TGL_OFFSET_LINE 0x2
39 #define TGL_OFFSET_POINT 0x4
44 PN_stdfloat buf[SPECULAR_BUFFER_SIZE+1];
54 PN_stdfloat spot_exponent;
55 PN_stdfloat spot_cutoff;
56 PN_stdfloat attenuation[3];
58 PN_stdfloat cos_spot_cutoff;
59 V3 norm_spot_direction;
69 PN_stdfloat shininess;
78 int xmin,ymin,xsize,ysize;
85 PN_stdfloat left, right, bottom, top;
97 GLParam ops[OP_BUFFER_MAX_SIZE];
110 V2 tex_coord[MAX_TEXTURE_STAGES];
130 void *allocated_buffer;
136 typedef void (*gl_draw_triangle_func)(
struct GLContext *c,
148 V4 ambient_light_model;
149 int local_light_model;
150 int lighting_enabled;
151 int light_model_two_side;
157 GLTexture *current_textures[MAX_TEXTURE_STAGES];
158 int num_textures_enabled;
161 M4 matrix_projection;
162 M4 matrix_model_view;
163 M4 matrix_model_view_inv;
164 M4 matrix_model_projection;
165 int matrix_model_projection_updated;
166 int matrix_model_projection_no_w_transform;
167 int apply_texture_matrix;
174 int smooth_shade_model;
175 int cull_face_enabled;
177 int normalize_enabled;
178 PN_stdfloat normal_scale;
180 gl_draw_triangle_func draw_triangle_front,draw_triangle_back;
181 ZB_fillTriangleFunc zb_fill_tri;
196 int specbuf_used_counter;
197 int specbuf_num_buffers;
210 void gl_draw_triangle_point(
GLContext *c,
218 void gl_enable_disable_light(
GLContext *c,
int light,
int v);
226 void gl_convertRGB_to_5R6G5B(
unsigned short *pixmap,
unsigned char *rgb,
227 int xsize,
int ysize);
228 void gl_convertRGB_to_8A8R8G8B(
unsigned int *pixmap,
unsigned char *rgb,
229 int xsize,
int ysize);
230 void gl_resizeImage(
unsigned char *dest,
int xsize_dest,
int ysize_dest,
231 unsigned char *src,
int xsize_src,
int ysize_src);
232 void gl_resizeImageNoInterpolate(
unsigned char *dest,
int xsize_dest,
int ysize_dest,
233 unsigned char *src,
int xsize_src,
int ysize_src);
237 void gl_fatal_error(
const char *format, ...);
242 const PN_stdfloat shininess);
247 #define CLIP_EPSILON (1E-5f)
249 static inline int gl_clipcode(PN_stdfloat x,PN_stdfloat y,PN_stdfloat z,PN_stdfloat w1)
253 w = w1 * (1.0f + CLIP_EPSILON);