/**********************************************************************
This file is part of Crack dot Com's free source code release of
Golgotha.
for
information about compiling & licensing issues visit this URL
If that doesn't help, contact Jonathan Clark at golgotha_source@usa.net (Subject should have "GOLG" in it) ***********************************************************************/ #ifndef _R1_DX5_HH_ #define _R1_DX5_HH_ #include "r1_api.hh" #include "r1_win.hh" #include#include class r1_dx5_render_window_class : public r1_render_window_class { public: r1_dx5_render_window_class(w16 w, w16 h, r1_expand_type expand_type, r1_render_api_class *api); ~r1_dx5_render_window_class(); void draw(i4_draw_context_class &context); I4_EVENT_NAME("dx5 render window"); }; class r1_dx5_class : public r1_render_api_class { void copy_part(i4_image_class *im, int x, int y, // position on screen int x1, int y1, // area of image to copy int x2, int y2); public: friend inline void make_d3d_verts(D3DTLVERTEX *dx_v,r1_vert *r1_v,r1_dx5_class *c,int total); r1_dx5_class(); ~r1_dx5_class(); // returns false if display is not compatible with render_api, i.e. if you pass // the directx display to the glide render api it return false // init will create the texture manager, which can be used after this call // text_mem_size if size of buffer to hold compressed textures (in system memory) i4_bool init(i4_display_class *display); // this will delete the texture manager (and free textures associated with) created by init void uninit(); void set_z_range(i4_float near_z, i4_float far_z); void set_filter_mode(r1_filter_type type); void set_alpha_mode(r1_alpha_type type); void set_write_mode(r1_write_mask_type mask); // draws the polygon at the end of the frame (during end_render()) void render_poly(int t_verts, r1_vert *verts); void render_pixel(r1_vert *pixel); void render_lines(int t_lines, r1_vert *verts); void clear_area(int x1, int y1, int x2, int y2, w32 color, float w); // creates an image of the same bit depth and palette of screen (for use with put_image) i4_image_class *create_compatible_image(w16 w, w16 h); // texture handle is obtained from the texture manager, this is enables texture mapping void use_texture(r1_texture_handle material_ref, sw32 desired_width, w32 frame); r1_alpha_type pre_holy_alpha_mode; r1_write_mask_type pre_holy_write_mask; i4_bool states_have_changed; i4_bool holy_mode; i4_bool texture_mode; void enable_holy(); void disable_holy(); void flush_vert_buffer(); // drawing will the constant color to render with if textures are disabled void disable_texture(); r1_render_window_class *create_render_window(int visable_w, int visable_h, r1_expand_type type); i4_float x_off,y_off; i4_bool hardware_tmapping; i4_bool needs_square_textures; char dd_driver_name[128]; char d3d_driver_name[128]; IDirectDrawSurface3 *zbuffer_surface; IDirect3D2 *d3d; IDirect3DDevice2 *d3d_device; IDirect3DViewport2 *d3d_viewport; }; extern r1_dx5_class r1_dx5_class_instance; #endif