X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fscreen.h;h=f66c7aa762e140c5d5d4b7798155b982f9945a2f;hp=66590e717bd238046d30b27f3ac18cbe08ebf70e;hb=b95fd30aafb3f47d2bfc8aa8f75600db4fdb995c;hpb=700f1449af19115ff2bbe50ad67ea7c73f9aa5cd diff --git a/src/screen.h b/src/screen.h index 66590e7..f66c7aa 100644 --- a/src/screen.h +++ b/src/screen.h @@ -6,6 +6,8 @@ #include #include "stb_truetype.h" +#include "graphicsbuffer.h" +#include "shaderprogram.h" namespace IPDF { @@ -57,22 +59,40 @@ namespace IPDF void ScreenShot(const char * filename) const; void RenderBMP(const char * filename) const; + + // Returns the CPU time (in seconds) it took to render the last completed frame. + double GetLastFrameTimeCPU() const { return m_last_frame_time / SDL_GetPerformanceFrequency(); } + // Returns the GPU time (in seconds) it took to render the last completed frame. + double GetLastFrameTimeGPU() const; private: void ResizeViewport(int width, int height); + void DebugFontFlush(); MouseHandler m_mouse_handler; int m_last_mouse_x; int m_last_mouse_y; + double m_last_frame_time; + double m_frame_begin_time; + GLuint m_frame_gpu_timer; + GLuint m_last_frame_gpu_timer; + int m_viewport_width; int m_viewport_height; SDL_Window *m_window; SDL_GLContext m_gl_context; + ShaderProgram m_texture_prog; + GLint m_colour_uniform_location; + GraphicsBuffer m_viewport_ubo; stbtt_bakedchar m_debug_font_rects[96]; unsigned int m_debug_font_atlas; float m_debug_font_x; float m_debug_font_y; float m_debug_font_size; + GraphicsBuffer m_debug_font_vertices; + GraphicsBuffer m_debug_font_indices; + int m_debug_font_vertex_head; + int m_debug_font_index_head; }; }