/* interface to OpenGL functions * Added 9/15/99 Matthew Mueller * Got rid of OpenGL-internal stuff 2004-5-16 Martin Schaffner */ #ifndef _OGL_INIT_H_ #define _OGL_INIT_H_ #ifdef _MSC_VER # undef MAC // dirty feckin hack #include #include # define MAC(x) #endif #ifdef _MSC_VER //_WIN32 #define OGL_RUNTIME_LOAD #endif #ifdef OGL_RUNTIME_LOAD #include "loadgl.h" int ogl_init_load_library(void); #else #define GL_GLEXT_LEGACY #undef GL_ARB_multitexture #if defined(__APPLE__) && defined(__MACH__) #include #include #else #define GL_GLEXT_PROTOTYPES #include #endif #endif #ifndef GL_VERSION_1_1 #ifdef GL_EXT_texture #define GL_INTENSITY4 GL_INTENSITY4_EXT #define GL_INTENSITY8 GL_INTENSITY8_EXT #endif #endif #include "gr.h" #include "palette.h" #include "pstypes.h" /* we need to export ogl_texture for 2d/font.c */ typedef struct _ogl_texture { GLuint handle; GLint internalformat; GLenum format; int w,h,tw,th,lw; int bytesu; int bytes; GLfloat u,v; GLfloat prio; int wrapstate[2]; fix lastrend; unsigned long numrend; char wantmip; } ogl_texture; extern ogl_texture* ogl_get_free_texture(); void ogl_init_texture(ogl_texture* t, int w, int h, int flags); extern int ogl_alttexmerge;//merge textures by just printing the seperate textures? extern int ogl_rgba_internalformat; extern int ogl_rgb_internalformat; extern int ogl_setgammaramp_ok; extern int ogl_intensity4_ok; extern int ogl_luminance4_alpha4_ok; extern int ogl_rgba2_ok; extern int ogl_readpixels_ok; extern int ogl_gettexlevelparam_ok; extern int ogl_scissor_ok; #ifndef EXT_texture_env_combine #define EXT_texture_env_combine 1 #define GL_COMBINE_RGB_EXT 0x8571 #define GL_COMBINE_ALPHA_EXT 0x8572 #define GL_PRIMARY_COLOR_EXT 0x8577 #define GL_PREVIOUS_EXT 0x8578 #define GL_SOURCE0_RGB_EXT 0x8580 #define GL_SOURCE1_RGB_EXT 0x8581 #define GL_SOURCE2_RGB_EXT 0x8582 #define GL_SOURCE0_ALPHA_EXT 0x8588 #define GL_SOURCE1_ALPHA_EXT 0x8589 #define GL_SOURCE2_ALPHA_EXT 0x858A #define GL_OPERAND0_RGB_EXT 0x8590 #define GL_OPERAND1_RGB_EXT 0x8591 #define GL_OPERAND2_RGB_EXT 0x8592 #define GL_OPERAND0_ALPHA_EXT 0x8598 #define GL_OPERAND1_ALPHA_EXT 0x8599 #define GL_OPERAND2_ALPHA_EXT 0x859A #endif #ifndef GL_NV_texture_env_combine4 #define GL_NV_texture_env_combine4 1 #define GL_COMBINE4_NV 0x8503 #define GL_SOURCE3_RGB_NV 0x8583 #define GL_SOURCE3_ALPHA_NV 0x858B #define GL_OPERAND3_RGB_NV 0x8593 #define GL_OPERAND3_ALPHA_NV 0x859B #endif extern int ogl_nv_texture_env_combine4_ok; #ifdef GL_NV_register_combiners extern int ogl_nv_register_combiners_ok; #define OGL_SUPER_TRANSPARENT_OK (ogl_nv_register_combiners_ok) #else #define OGL_SUPER_TRANSPARENT_OK (0) #endif #ifndef GL_EXT_texture_filter_anisotropic #define GL_EXT_texture_filter_anisotropic 1 #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF #endif extern int ogl_ext_texture_filter_anisotropic_ok; #ifndef GL_EXT_shared_texture_palette #define GL_EXT_shared_texture_palette 1 #define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB #endif #ifdef GL_EXT_paletted_texture extern int ogl_paletted_texture_ok; extern int ogl_shared_palette_ok; #endif void ogl_init_shared_palette(void); extern int gl_initialized; extern int GL_texmagfilt,GL_texminfilt,GL_needmipmaps; extern float GL_texanisofilt; extern int gl_reticle; extern int active_texture_unit; void ogl_setActiveTexture(int t); int ogl_check_mode(int x, int y); // check if mode is valid int ogl_init_window(int x, int y);//create a window/switch modes/etc void ogl_destroy_window(void);//destroy window/etc void ogl_init(void);//one time initialization void ogl_close(void);//one time shutdown #define OGL_FLAG_MIPMAP (1 << 0) #define OGL_FLAG_NOCOLOR (1 << 1) #define OGL_FLAG_ALPHA (1 << 31) // not required for ogl_loadbmtexture, since it uses the BM_FLAG_TRANSPARENT, but is needed for ogl_init_texture. void ogl_loadbmtexture_f(grs_bitmap *bm, int flags); void ogl_freebmtexture(grs_bitmap *bm); void ogl_start_offscreen_render(int x, int y, int w, int h); void ogl_end_offscreen_render(void); void ogl_start_frame(void); void ogl_end_frame(void); void ogl_swap_buffers(void); void ogl_set_screen_mode(void); void ogl_cache_level_textures(void); void ogl_urect(int left, int top, int right, int bot); bool ogl_ubitmapm_c(int x, int y, grs_bitmap *bm, int c); bool ogl_ubitmapm_cs(int x, int y,int dw, int dh, grs_bitmap *bm,int c, int scale); bool ogl_ubitmapm(int x, int y, grs_bitmap *bm); bool ogl_ubitblt_i(int dw, int dh, int dx, int dy, int sw, int sh, int sx, int sy, grs_bitmap * src, grs_bitmap * dest, int mipmap); bool ogl_ubitblt(int w, int h, int dx, int dy, int sx, int sy, grs_bitmap * src, grs_bitmap * dest); bool ogl_ubitblt_tolinear(int w, int h, int dx, int dy, int sx, int sy, grs_bitmap * src, grs_bitmap * dest); bool ogl_ubitblt_copy(int w, int h, int dx, int dy, int sx, int sy, grs_bitmap * src, grs_bitmap * dest); void ogl_upixelc(int x, int y, int c); void ogl_ulinec(int left, int top, int right, int bot, int c); #include "3d.h" bool g3_draw_tmap_2(int nv,g3s_point **pointlist,g3s_uvl *uvl_list,grs_bitmap *bmbot,grs_bitmap *bm, int orient); void ogl_draw_reticle(int cross, int primary, int secondary); #endif /* _OGL_INIT_H_ */