Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/WolfireGames/overgrowth.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Graphics/graphics.h')
-rw-r--r--Source/Graphics/graphics.h591
1 files changed, 297 insertions, 294 deletions
diff --git a/Source/Graphics/graphics.h b/Source/Graphics/graphics.h
index 93bd8f64..a4a7780d 100644
--- a/Source/Graphics/graphics.h
+++ b/Source/Graphics/graphics.h
@@ -1,7 +1,7 @@
//-----------------------------------------------------------------------------
// Name: graphics.h
// Developer: Wolfire Games LLC
-// Description:
+// Description:
// License: Read below
//-----------------------------------------------------------------------------
//
@@ -45,23 +45,21 @@
const GLuint INVALID_FRAMEBUFFER = UINT_MAX;
-enum ShadowedClientStateFlags
-{
- F_VERTEX_ARRAY = (1<<0),
- F_NORMAL_ARRAY = (1<<1),
- F_COLOR_ARRAY = (1<<2),
- F_TEXTURE_COORD_ARRAY0 = (1<<3),
- F_TEXTURE_COORD_ARRAY1 = (1<<4),
- F_TEXTURE_COORD_ARRAY2 = (1<<5),
- F_TEXTURE_COORD_ARRAY3 = (1<<6),
- F_TEXTURE_COORD_ARRAY4 = (1<<7),
- F_TEXTURE_COORD_ARRAY5 = (1<<8),
- F_TEXTURE_COORD_ARRAY6 = (1<<9),
- F_TEXTURE_COORD_ARRAY7 = (1<<10)
+enum ShadowedClientStateFlags {
+ F_VERTEX_ARRAY = (1 << 0),
+ F_NORMAL_ARRAY = (1 << 1),
+ F_COLOR_ARRAY = (1 << 2),
+ F_TEXTURE_COORD_ARRAY0 = (1 << 3),
+ F_TEXTURE_COORD_ARRAY1 = (1 << 4),
+ F_TEXTURE_COORD_ARRAY2 = (1 << 5),
+ F_TEXTURE_COORD_ARRAY3 = (1 << 6),
+ F_TEXTURE_COORD_ARRAY4 = (1 << 7),
+ F_TEXTURE_COORD_ARRAY5 = (1 << 8),
+ F_TEXTURE_COORD_ARRAY6 = (1 << 9),
+ F_TEXTURE_COORD_ARRAY7 = (1 << 10)
};
-enum ShadowedClientStateID
-{
+enum ShadowedClientStateID {
CS_VERTEX_ARRAY,
CS_NORMAL_ARRAY,
CS_COLOR_ARRAY,
@@ -73,85 +71,87 @@ enum ShadowedClientStateID
CS_TEXTURE_COORD_ARRAY5,
CS_TEXTURE_COORD_ARRAY6,
CS_TEXTURE_COORD_ARRAY7,
-
+
CS_MAX_SHADOWED_CLIENT_STATES
};
class Config;
namespace BloodLevel {
- enum Type {
- kNone = 0,
- kSimple = 1,
- kFull = 2
- };
+enum Type {
+ kNone = 0,
+ kSimple = 1,
+ kFull = 2
+};
}
namespace FullscreenMode {
- enum Mode {
- kWindowed = 0 // Resizable floating window
- , kFullscreen = 1 // Exclusive fullscreen
- , kWindowed_borderless = 2
- , kFullscreen_borderless = 3
- };
+enum Mode {
+ kWindowed = 0 // Resizable floating window
+ ,
+ kFullscreen = 1 // Exclusive fullscreen
+ ,
+ kWindowed_borderless = 2,
+ kFullscreen_borderless = 3
+};
}
class GraphicsConfig {
-public:
+ public:
bool dynamic_character_cubemap_;
- bool gpu_skinning() const {return gpu_skinning_;}
- float anisotropy() const {return anisotropy_;}
- int FSAA_samples() const {return FSAA_samples_;}
- FullscreenMode::Mode full_screen() const {return full_screen_;}
- int target_monitor() const {return target_monitor_;}
- int screen_width() const {return screen_width_;}
- int screen_height() const {return screen_height_;}
- bool split_screen() const {return split_screen_;}
- int texture_reduce() const {return texture_reduce_;}
- int texture_reduction_factor() const {return texture_reduction_factor_;}
- bool vSync() const {return vSync_;}
+ bool gpu_skinning() const { return gpu_skinning_; }
+ float anisotropy() const { return anisotropy_; }
+ int FSAA_samples() const { return FSAA_samples_; }
+ FullscreenMode::Mode full_screen() const { return full_screen_; }
+ int target_monitor() const { return target_monitor_; }
+ int screen_width() const { return screen_width_; }
+ int screen_height() const { return screen_height_; }
+ bool split_screen() const { return split_screen_; }
+ int texture_reduce() const { return texture_reduce_; }
+ int texture_reduction_factor() const { return texture_reduction_factor_; }
+ bool vSync() const { return vSync_; }
bool limit_fps_in_game() const { return limit_fps_in_game_; }
- int max_frame_rate() const {return max_frame_rate_;}
- int blood() const {return blood_;}
- bool simple_fog() const {return simple_fog_;}
- bool depth_of_field() const {return depth_of_field_;}
- bool depth_of_field_reduced() const {return depth_of_field_reduced_;}
- bool detail_objects() const {return detail_objects_;}
- bool detail_object_decals() const {return detail_object_decals_;}
- bool detail_object_lowres() const {return detail_object_lowres_;}
- bool detail_object_shadows() const {return detail_object_shadows_;}
- const vec3 &blood_color() const {return blood_color_;}
+ int max_frame_rate() const { return max_frame_rate_; }
+ int blood() const { return blood_; }
+ bool simple_fog() const { return simple_fog_; }
+ bool depth_of_field() const { return depth_of_field_; }
+ bool depth_of_field_reduced() const { return depth_of_field_reduced_; }
+ bool detail_objects() const { return detail_objects_; }
+ bool detail_object_decals() const { return detail_object_decals_; }
+ bool detail_object_lowres() const { return detail_object_lowres_; }
+ bool detail_object_shadows() const { return detail_object_shadows_; }
+ const vec3& blood_color() const { return blood_color_; }
static vec3 BloodColorFromString(const std::string& str);
- void SetGPUSkinning(bool val) {gpu_skinning_ = val;}
- void SetAnisotropy(float val) {anisotropy_ = val;}
- void SetFSAASamples(int val) {FSAA_samples_ = val;}
- void SetFullscreen(FullscreenMode::Mode val) {full_screen_ = val;}
- void SetTargetMonitor(int val) {target_monitor_ = val;}
- void SetScreenWidth(int val) {screen_width_ = val;}
- void SetScreenHeight(int val) {screen_height_ = val;}
- void SetSplitScreen(bool val) {split_screen_ = val;}
- void SetBlood(int val) {blood_ = val;}
- void SetBloodColor(const vec3 &val) {blood_color_ = val;}
+ void SetGPUSkinning(bool val) { gpu_skinning_ = val; }
+ void SetAnisotropy(float val) { anisotropy_ = val; }
+ void SetFSAASamples(int val) { FSAA_samples_ = val; }
+ void SetFullscreen(FullscreenMode::Mode val) { full_screen_ = val; }
+ void SetTargetMonitor(int val) { target_monitor_ = val; }
+ void SetScreenWidth(int val) { screen_width_ = val; }
+ void SetScreenHeight(int val) { screen_height_ = val; }
+ void SetSplitScreen(bool val) { split_screen_ = val; }
+ void SetBlood(int val) { blood_ = val; }
+ void SetBloodColor(const vec3& val) { blood_color_ = val; }
void SetTextureReduce(int val) {
- texture_reduce_ = val;
+ texture_reduce_ = val;
texture_reduction_factor_ = 1 << texture_reduce_;
}
- void SetVSync(bool val) {vSync_ = val;}
+ void SetVSync(bool val) { vSync_ = val; }
void SetLimitFpsInGame(bool val) { limit_fps_in_game_ = val; }
- void SetMaxFrameRate(int val) {max_frame_rate_ = val;}
- void SetSimpleFog(bool val) {simple_fog_ = val;}
- void SetDepthOfField(bool val) {depth_of_field_ = val;}
- void SetDepthOfFieldReduced(bool val) {depth_of_field_reduced_ = val;}
- void SetDetailObjects(bool val) {detail_objects_ = val;}
- void SetDetailObjectDecals(bool val) {detail_object_decals_ = val;}
- void SetDetailObjectLowres(bool val) {detail_object_lowres_ = val;}
- void SetDetailObjectShadows(bool val) {detail_object_shadows_ = val; }
+ void SetMaxFrameRate(int val) { max_frame_rate_ = val; }
+ void SetSimpleFog(bool val) { simple_fog_ = val; }
+ void SetDepthOfField(bool val) { depth_of_field_ = val; }
+ void SetDepthOfFieldReduced(bool val) { depth_of_field_reduced_ = val; }
+ void SetDetailObjects(bool val) { detail_objects_ = val; }
+ void SetDetailObjectDecals(bool val) { detail_object_decals_ = val; }
+ void SetDetailObjectLowres(bool val) { detail_object_lowres_ = val; }
+ void SetDetailObjectShadows(bool val) { detail_object_shadows_ = val; }
bool seamless_cubemaps_;
float motion_blur_amount_;
-private:
+ private:
bool simple_fog_;
bool depth_of_field_;
bool depth_of_field_reduced_;
@@ -163,7 +163,7 @@ private:
float anisotropy_;
int FSAA_samples_;
FullscreenMode::Mode full_screen_;
- int target_monitor_; // Used when retrieving monitor data from SDL, though not 100% supported. Currently hard-coded to 0
+ int target_monitor_; // Used when retrieving monitor data from SDL, though not 100% supported. Currently hard-coded to 0
int screen_width_;
int screen_height_;
bool split_screen_;
@@ -177,19 +177,20 @@ private:
};
class GraphicsFeatures {
-public:
- bool HDR_enable() const {return HDR_enable_;}
- bool frame_buffer_fsaa_enabled() const {return frame_buffer_fsaa_enabled_;}
-
- void SetHDREnable(bool val) {HDR_enable_ = val;}
- void SetFrameBufferFSAAEnabled(bool val) {frame_buffer_fsaa_enabled_ = val;}
-private:
+ public:
+ bool HDR_enable() const { return HDR_enable_; }
+ bool frame_buffer_fsaa_enabled() const { return frame_buffer_fsaa_enabled_; }
+
+ void SetHDREnable(bool val) { HDR_enable_ = val; }
+ void SetFrameBufferFSAAEnabled(bool val) { frame_buffer_fsaa_enabled_ = val; }
+
+ private:
bool HDR_enable_;
bool frame_buffer_fsaa_enabled_;
};
struct GraphicsShadowState {
- int depth_func_type_; // Shadow the glDepthFunc values
+ int depth_func_type_; // Shadow the glDepthFunc values
bool depth_func_unset_;
GLState gl_state_;
@@ -211,215 +212,219 @@ struct PostEffects {
TextureRef tone_mapped_tex;
};
-class Graphics
-{
- public:
- void Dispose();
-private:
- Graphics();
-
- bool gl_lib_loaded_; // To avoid loading the gl library multiple times
-
- GraphicsFeatures features_;
- GraphicsShadowState shadow_state_;
- bool media_mode_;
- void *gl_context;
- uint32_t active_vertex_attrib_arrays;
- uint32_t wanted_vertex_attrib_arrays;
- int max_vertex_attrib_arrays;
-
- const char* shader;
-
- void SetVertexAttribArrays();
-
- FullscreenMode::Mode currentFullscreenType;
- public:
- GraphicsConfig config_;
- SDL_Window *sdl_window_;
- bool depth_prepass;
- PostEffects post_effects;
- enum ScreenType {kWindow, kRender, kTexture};
-
- void Initialize();
- void GetShaderNames(std::map<std::string, int>& preload_shaders);
- void WindowResized( ivec2 value );
- GraphicsFeatures &features(){return features_;}
- void SetMediaMode( bool val ){ media_mode_ = val;}
- void SetSeamlessCubemaps( bool val );
- bool media_mode() const {return media_mode_;}
- GLVendor vendor;
- TextureAssetRef noise_ref;
- TextureAssetRef pure_noise_ref;
-
- int queued_screenshot;
- bool pre_screenshot_media_mode_state;
- enum ScreenshotMode {kGameplay, kTransparentGameplay};
- ScreenshotMode screenshot_mode;
-
- float shadow_size;
-
- TextureRef static_shadow_depth_ref;
- TextureRef cascade_shadow_depth_ref;
- TextureRef cascade_shadow_color_ref;
- GLuint cascade_shadow_res;
- GLuint cascade_shadow_fb;
- GLuint static_shadow_fb;
- GLuint cascade_shadow_color_fb;
- mat4 cascade_shadow_mat[4];
- mat4 simple_shadow_mat;
- float cascade_shadow_radius[4];
-
- float hdr_white_point;
- float hdr_black_point;
- float hdr_bloom_mult;
-
- GLuint shadow_res;
- bool drawing_shadow;
- std::stack<ViewportDims> viewport_dims_stack;
- int viewport_dim[4];
-
- int vbo_array_bound;
- int vbo_element_bound;
-
- bool multisample_framebuffer_exists;
- GLuint multisample_framebuffer;
- GLuint multisample_depth;
- GLuint multisample_color;
- GLuint multisample_vel;
-
- bool framebuffer_exists;
- GLuint framebuffer;
- TextureRef screen_color_tex;
- TextureRef screen_vel_tex;
- TextureRef screen_depth_tex;
- std::string post_shader_name; // Just used for saving
-
- bool use_sample_alpha_to_coverage;
-
- int max_texture_units;
-
- int old_FSAA_samples;
- int old_render_dims[2];
- bool old_post_effects_enable;
- bool first_load;
- bool initialized;
- bool settings_changed; // for detail objects
-
- std::stack<GLuint> fbo_stack;
- GLuint curr_framebuffer;
- bool nav_mesh_out_of_date;
- int nav_mesh_out_of_date_chunk;
- int line_width;
-
- // The following allow us to render the game, UI, and window at different resolutions
- // E.g.
- int window_dims[2]; // dimensions of OS window
- int render_dims[2]; // dimensions of game render target. Same as window_dims if windowed, otherwise internal resolution
- int render_output_dims[2]; // dimensions of render target output in window. Same as window_dims, unless the aspect ratio is off?
-
- void Clear(const bool clear_color);
- void setViewport(const GLint startx, const GLint starty, const GLint endx, const GLint endy);
- void setAdditiveBlend(const bool what);
- void SetBlendFunc(const int src, const int dest, const int alpha_src = GL_ONE, const int alpha_dst = GL_ONE_MINUS_SRC_ALPHA);
- void setDepthFunc(const int type);
- void setBlend(const bool what);
- void setDepthTest(const bool what);
- void setCullFace(const bool what);
- void setDepthWrite(const bool what);
- void setPolygonOffset( const bool polygon_offset );
- void setSimpleShadows(const bool val);
- void setSimpleWater(const bool val);
- void SetParticleFieldSimple(bool val);
- void setDepthOfField(const bool val);
- void setAttribEnvObjInstancing(bool val);
-
- void PushViewport();
- void PopViewport();
-
- void TakeScreenshot();
-
- void setGLState(const GLState &state);
-
- void RenderFramebufferToTexture(GLuint framebuffer, TextureRef texture_ref);
- void EndTextureSpaceRendering();
-
- void PushFramebuffer();
- void PopFramebuffer();
- void bindRenderbuffer(GLuint rb);
- void bindFramebuffer(GLuint fb);
- void framebufferDepthTexture2D(TextureRef t, int mipmap_level=0);
- void framebufferColorTexture2D(TextureRef t, int mipmap_level=0);
- void genRenderbuffers(GLuint *rb);
-
- std::map<GLuint, std::string> framebuffernames;
- void genFramebuffers (GLuint *fb, const char* human_name);
- void deleteFramebuffer(GLuint *fb);
- void renderbufferStorage(GLuint res);
- void framebufferRenderbuffer(GLuint rb);
- GLenum checkFramebufferStatus();
-
- unsigned int GetShadowSize(unsigned int target_shadow_size);
- void startDraw(vec2 start = vec2(0.0f), vec2 end = vec2(1.0f), ScreenType screen_type = kRender);
- void SwapToScreen();
- void InitScreen();
- void ResizeWindow(int& w, int& h);
-
- void SetUpWindowDims(int& w, int& h);
- static Graphics* Instance() {
- static Graphics instance;
- return &instance;
- }
- void SetModelMatrix( const mat4& matrix, const mat3& normal_matrix );
- void SetSimpleLineDrawState();
- void BlitDepthBuffer();
- void BlitColorBuffer();
-
- void SetClientStates(int flags);
- void SetClientStateEnabled(int shadowStateID, bool enabled);
- void SetClientActiveTexture(int index);
- void SetFromConfig( const Config &config, bool dynamic = false);
- void SetWindowGrab( bool val );
- void BindVBO(int target, int val);
- void UnbindVBO(int target, int val);
- void BindArrayVBO(int val);
- void BindElementVBO(int val);
- void SetLineWidth( int val );
- //void SetFullscreen(bool val);
- void SetFullscreen(FullscreenMode::Mode val);
-
- void SetFSAA(int val);
- void SetVsync(bool val);
- void SetLimitFpsInGame(bool val);
- void SetMaxFrameRate(int val);
- void SetSimpleFog(bool val);
- void SetDepthOfField(bool val);
- void SetDepthOfFieldReduced(bool val);
- void SetDetailObjects(bool val);
- void SetDetailObjectDecals(bool val);
- void SetDetailObjectLowres(bool val);
- void SetDetailObjectShadows(bool val);
- void SetDetailObjectsReduced(bool val);
- void SetAnisotropy(float val);
- //void SetWindowDimensions( int w, int h );
- void SetResolution(int w, int h, bool force);
- void SetTargetMonitor(int targetMonitor);
- void CheckForWindowResize();
- void StartTextureSpaceRenderingCustom(int x, int y, int width, int height);
-
- void DrawArrays(GLenum mode, int first, unsigned int count);
- void DrawElements(GLenum mode, unsigned int count, GLenum type, const void * indices);
- void DrawElementsInstanced(GLenum mode, unsigned int count, GLenum type, const void * indices, unsigned int primcount);
- void DrawRangeElements(GLenum mode, unsigned int start, unsigned int end, unsigned int count, GLenum type, const void * indices);
-
- void EnableVertexAttribArray(unsigned int index);
- void DisableVertexAttribArray(unsigned int index);
- void ResetVertexAttribArrays();
- void ClearGLState();
-
- void SetUpShadowTextures();
-
- // output a debug message to OpenGL trace
- void DebugTracePrint(const char *message);
+class Graphics {
+ public:
+ void Dispose();
+
+ private:
+ Graphics();
+
+ bool gl_lib_loaded_; // To avoid loading the gl library multiple times
+
+ GraphicsFeatures features_;
+ GraphicsShadowState shadow_state_;
+ bool media_mode_;
+ void* gl_context;
+ uint32_t active_vertex_attrib_arrays;
+ uint32_t wanted_vertex_attrib_arrays;
+ int max_vertex_attrib_arrays;
+
+ const char* shader;
+
+ void SetVertexAttribArrays();
+
+ FullscreenMode::Mode currentFullscreenType;
+
+ public:
+ GraphicsConfig config_;
+ SDL_Window* sdl_window_;
+ bool depth_prepass;
+ PostEffects post_effects;
+ enum ScreenType { kWindow,
+ kRender,
+ kTexture };
+
+ void Initialize();
+ void GetShaderNames(std::map<std::string, int>& preload_shaders);
+ void WindowResized(ivec2 value);
+ GraphicsFeatures& features() { return features_; }
+ void SetMediaMode(bool val) { media_mode_ = val; }
+ void SetSeamlessCubemaps(bool val);
+ bool media_mode() const { return media_mode_; }
+ GLVendor vendor;
+ TextureAssetRef noise_ref;
+ TextureAssetRef pure_noise_ref;
+
+ int queued_screenshot;
+ bool pre_screenshot_media_mode_state;
+ enum ScreenshotMode { kGameplay,
+ kTransparentGameplay };
+ ScreenshotMode screenshot_mode;
+
+ float shadow_size;
+
+ TextureRef static_shadow_depth_ref;
+ TextureRef cascade_shadow_depth_ref;
+ TextureRef cascade_shadow_color_ref;
+ GLuint cascade_shadow_res;
+ GLuint cascade_shadow_fb;
+ GLuint static_shadow_fb;
+ GLuint cascade_shadow_color_fb;
+ mat4 cascade_shadow_mat[4];
+ mat4 simple_shadow_mat;
+ float cascade_shadow_radius[4];
+
+ float hdr_white_point;
+ float hdr_black_point;
+ float hdr_bloom_mult;
+
+ GLuint shadow_res;
+ bool drawing_shadow;
+ std::stack<ViewportDims> viewport_dims_stack;
+ int viewport_dim[4];
+
+ int vbo_array_bound;
+ int vbo_element_bound;
+
+ bool multisample_framebuffer_exists;
+ GLuint multisample_framebuffer;
+ GLuint multisample_depth;
+ GLuint multisample_color;
+ GLuint multisample_vel;
+
+ bool framebuffer_exists;
+ GLuint framebuffer;
+ TextureRef screen_color_tex;
+ TextureRef screen_vel_tex;
+ TextureRef screen_depth_tex;
+ std::string post_shader_name; // Just used for saving
+
+ bool use_sample_alpha_to_coverage;
+
+ int max_texture_units;
+
+ int old_FSAA_samples;
+ int old_render_dims[2];
+ bool old_post_effects_enable;
+ bool first_load;
+ bool initialized;
+ bool settings_changed; // for detail objects
+
+ std::stack<GLuint> fbo_stack;
+ GLuint curr_framebuffer;
+ bool nav_mesh_out_of_date;
+ int nav_mesh_out_of_date_chunk;
+ int line_width;
+
+ // The following allow us to render the game, UI, and window at different resolutions
+ // E.g.
+ int window_dims[2]; // dimensions of OS window
+ int render_dims[2]; // dimensions of game render target. Same as window_dims if windowed, otherwise internal resolution
+ int render_output_dims[2]; // dimensions of render target output in window. Same as window_dims, unless the aspect ratio is off?
+
+ void Clear(const bool clear_color);
+ void setViewport(const GLint startx, const GLint starty, const GLint endx, const GLint endy);
+ void setAdditiveBlend(const bool what);
+ void SetBlendFunc(const int src, const int dest, const int alpha_src = GL_ONE, const int alpha_dst = GL_ONE_MINUS_SRC_ALPHA);
+ void setDepthFunc(const int type);
+ void setBlend(const bool what);
+ void setDepthTest(const bool what);
+ void setCullFace(const bool what);
+ void setDepthWrite(const bool what);
+ void setPolygonOffset(const bool polygon_offset);
+ void setSimpleShadows(const bool val);
+ void setSimpleWater(const bool val);
+ void SetParticleFieldSimple(bool val);
+ void setDepthOfField(const bool val);
+ void setAttribEnvObjInstancing(bool val);
+
+ void PushViewport();
+ void PopViewport();
+
+ void TakeScreenshot();
+
+ void setGLState(const GLState& state);
+
+ void RenderFramebufferToTexture(GLuint framebuffer, TextureRef texture_ref);
+ void EndTextureSpaceRendering();
+
+ void PushFramebuffer();
+ void PopFramebuffer();
+ void bindRenderbuffer(GLuint rb);
+ void bindFramebuffer(GLuint fb);
+ void framebufferDepthTexture2D(TextureRef t, int mipmap_level = 0);
+ void framebufferColorTexture2D(TextureRef t, int mipmap_level = 0);
+ void genRenderbuffers(GLuint* rb);
+
+ std::map<GLuint, std::string> framebuffernames;
+ void genFramebuffers(GLuint* fb, const char* human_name);
+ void deleteFramebuffer(GLuint* fb);
+ void renderbufferStorage(GLuint res);
+ void framebufferRenderbuffer(GLuint rb);
+ GLenum checkFramebufferStatus();
+
+ unsigned int GetShadowSize(unsigned int target_shadow_size);
+ void startDraw(vec2 start = vec2(0.0f), vec2 end = vec2(1.0f), ScreenType screen_type = kRender);
+ void SwapToScreen();
+ void InitScreen();
+ void ResizeWindow(int& w, int& h);
+
+ void SetUpWindowDims(int& w, int& h);
+ static Graphics* Instance() {
+ static Graphics instance;
+ return &instance;
+ }
+ void SetModelMatrix(const mat4& matrix, const mat3& normal_matrix);
+ void SetSimpleLineDrawState();
+ void BlitDepthBuffer();
+ void BlitColorBuffer();
+
+ void SetClientStates(int flags);
+ void SetClientStateEnabled(int shadowStateID, bool enabled);
+ void SetClientActiveTexture(int index);
+ void SetFromConfig(const Config& config, bool dynamic = false);
+ void SetWindowGrab(bool val);
+ void BindVBO(int target, int val);
+ void UnbindVBO(int target, int val);
+ void BindArrayVBO(int val);
+ void BindElementVBO(int val);
+ void SetLineWidth(int val);
+ // void SetFullscreen(bool val);
+ void SetFullscreen(FullscreenMode::Mode val);
+
+ void SetFSAA(int val);
+ void SetVsync(bool val);
+ void SetLimitFpsInGame(bool val);
+ void SetMaxFrameRate(int val);
+ void SetSimpleFog(bool val);
+ void SetDepthOfField(bool val);
+ void SetDepthOfFieldReduced(bool val);
+ void SetDetailObjects(bool val);
+ void SetDetailObjectDecals(bool val);
+ void SetDetailObjectLowres(bool val);
+ void SetDetailObjectShadows(bool val);
+ void SetDetailObjectsReduced(bool val);
+ void SetAnisotropy(float val);
+ // void SetWindowDimensions( int w, int h );
+ void SetResolution(int w, int h, bool force);
+ void SetTargetMonitor(int targetMonitor);
+ void CheckForWindowResize();
+ void StartTextureSpaceRenderingCustom(int x, int y, int width, int height);
+
+ void DrawArrays(GLenum mode, int first, unsigned int count);
+ void DrawElements(GLenum mode, unsigned int count, GLenum type, const void* indices);
+ void DrawElementsInstanced(GLenum mode, unsigned int count, GLenum type, const void* indices, unsigned int primcount);
+ void DrawRangeElements(GLenum mode, unsigned int start, unsigned int end, unsigned int count, GLenum type, const void* indices);
+
+ void EnableVertexAttribArray(unsigned int index);
+ void DisableVertexAttribArray(unsigned int index);
+ void ResetVertexAttribArrays();
+ void ClearGLState();
+
+ void SetUpShadowTextures();
+
+ // output a debug message to OpenGL trace
+ void DebugTracePrint(const char* message);
};
bool CheckGLError(int line, const char* file, const char* errstring);
@@ -427,17 +432,15 @@ void CheckFBOError(int line, const char* file);
bool CheckGLErrorStr(char* output, unsigned length);
-
#if GPU_MARKERS
-#undef NO_GL_ERROR_CHECKING
+#undef NO_GL_ERROR_CHECKING
#define NO_GL_ERROR_CHECKING 1
#endif // GPU_MARKERS
-
-#define FORCE_CHECK_GL_ERROR() CheckGLError(__LINE__, __FILE__,NULL)
+#define FORCE_CHECK_GL_ERROR() CheckGLError(__LINE__, __FILE__, NULL)
#define FORCE_CHECK_FBO_ERROR() CheckFBOError(__LINE__, __FILE__)
#ifndef NO_GL_ERROR_CHECKING
-#define CHECK_GL_ERROR() CheckGLError(__LINE__, __FILE__,NULL)
+#define CHECK_GL_ERROR() CheckGLError(__LINE__, __FILE__, NULL)
#define CHECK_FBO_ERROR() CheckFBOError(__LINE__, __FILE__)
#else
#define CHECK_GL_ERROR()