63 #ifndef PTK_RENDERER_H 64 #define PTK_RENDERER_H 81 #if defined(PLATFORM_SDL) 83 # include <SDL2/SDL.h> 84 # include <SDL2/SDL_image.h> 87 # include <SDL_image.h> 89 #define RENDERER_PLATFORM_WINDOW_TYPE SDL_Window* 90 #define RENDERER_PLATFORM_CONTEXT_TYPE SDL_GLContext 91 #define RENDERER_PLATFORM_EVENT_TYPE SDL_EventType 92 #elif defined(PLATFORM_EGL) 94 #define RENDERER_PLATFORM_WINDOW_TYPE EGLSurface 95 #define RENDERER_PLATFORM_CONTEXT_TYPE uint32_t 96 #define RENDERER_PLATFORM_EVENT_TYPE uint32_t 97 #elif defined(PLATFORM_X11) 99 #include "X11/Xutil.h" 100 #define RENDERER_PLATFORM_WINDOW_TYPE EGLSurface 101 #define RENDERER_PLATFORM_CONTEXT_TYPE uint32_t 102 #define RENDERER_PLATFORM_EVENT_TYPE uint32_t 103 #elif defined(PLATFORM_WAYLAND) 104 #include <wayland-client.h> 105 #include <wayland-server.h> 106 #include <wayland-egl.h> 107 #include <linux/input.h> 108 #define RENDERER_PLATFORM_WINDOW_TYPE EGLSurface 109 #define RENDERER_PLATFORM_CONTEXT_TYPE uint32_t 110 #define RENDERER_PLATFORM_EVENT_TYPE uint32_t 111 #elif defined(PLATFORM_GLFW) 112 #include <GLFW/glfw3.h> 113 #define RENDERER_PLATFORM_WINDOW_TYPE GLFWwindow* 114 #define RENDERER_PLATFORM_CONTEXT_TYPE uint32_t 115 #define RENDERER_PLATFORM_EVENT_TYPE uint32_t 117 #error "Must define PLATFORM_SDL, PLATFORM_GLFW, PLATFORM_X11 or PLATFORM_WAYLAND" 120 #if !defined(PLATFORM_SDL) 127 #include <glm/glm.hpp> 129 #include <ft2build.h> 130 #include FT_FREETYPE_H 147 # define GL_DEBUG(x) do { GLenum errorCode; \ 148 while ((errorCode = glGetError()) != GL_NO_ERROR) \ 150 printf("Error in " #x "; gl error code: %d\n", errorCode); \ 156 #ifndef GUI_HISTORY_LENGTH 157 # define GUI_HISTORY_LENGTH 60 162 #if defined(PLATFORM_SDL) 163 std::function<void(SDL_Event*)>
cb[290];
165 std::function<void(uint32_t *)> cb[290];
172 #if defined(PLATFORM_SDL) 193 void render(uint64_t delta);
195 void createWindow(
const std::string& name, uint32_t width, uint32_t height);
196 void createConsole();
208 void setFPSTarget(uint32_t target);
209 void setWindowDimensions(uint32_t width, uint32_t height);
210 void setFovYZ(
float fovY,
float nearClip,
float farClip);
220 void computeProjectionMatrix();
221 glm::mat4x4 getProjectionMatrix()
const;
223 int loadFont(
const std::string& path,
int size);
224 int getFontId(
const std::string& path,
int size)
const;
225 Font *getFont(
int fontId)
const;
226 void setFont(
int fontId);
227 void setColor(glm::vec4 color) { _curColor = color; }
230 ptk::String *createString(
const std::string& source);
231 ptk::String *createString(
int fontId,
const std::string& source);
232 ptk::String *createString(
const std::string& source,
float normX,
float normY);
233 ptk::String *createString(
int fontId,
const std::string& source,
float normX,
float normY);
239 float getFPS()
const {
return _lastFps; }
245 GLuint loadImage(
const std::string& path);
246 GLuint loadImage(
void *mem,
size_t size);
247 GLuint loadImageYUV(
const std::string& path);
248 GLuint loadImageYUV(
void *mem,
size_t size);
252 void destroyTexture(
GLuint texture);
254 void platformSetupGraphicsContext(
const std::string& title, uint32_t width, uint32_t height);
255 void platformDestroyGraphicsContext();
256 void platformAddEventHandler(RENDERER_PLATFORM_EVENT_TYPE type, EventCallback callback);
257 void platformRegisterEvents();
258 void platformHandleEvents();
259 void platformSwapBuffers();
260 void platformLoadImageTo(
const std::string& path,
GLuint tex);
261 void platformLoadImageTo(
void *mem,
size_t size,
GLuint tex);
262 void platformGetWindowDimensions(uint32_t *width, uint32_t *height);
265 void setEglFdandPitch(uint32_t fd, uint32_t fd_off, int32_t pitch);
314 uint32_t _eglDisplayFd;
315 uint32_t _eglDisplayFdOff;
316 int32_t _eglDisplayPitch;
RENDERER_PLATFORM_WINDOW_TYPE _mainWindow
Definition: Renderer.h:290
Layout * _rootLayout
Definition: Renderer.h:288
int _nextFontId
Definition: Renderer.h:298
const Shader & getTextShader() const
Definition: Renderer.h:236
Definition: TexturedQuadRenderable.h:83
Definition: TexturedQuadRenderer.h:84
float getPixelHeight() const
Definition: Renderer.h:218
Definition: Dimensions.h:92
EventCallbackMap _callbackMap
Definition: Renderer.h:285
uint32_t _width
Definition: Renderer.h:271
std::map< int, std::list< ptk::String * > * > _strings
Definition: Renderer.h:302
GLint _glPrimitives
Definition: Renderer.h:311
Definition: Renderer.h:169
struct String String
Definition: c/Renderer.h:77
Definition: Renderable.h:76
Definition: QuadRenderer.h:83
glm::mat4x4 _projection
Definition: Renderer.h:277
GLint _glTime
Definition: Renderer.h:309
std::map< int, Font * > _fonts
Definition: Renderer.h:297
Definition: Renderer.h:160
Class for handling OpenGL shaders and allocating/deallocating them.
FT_Library _ft
Definition: Renderer.h:293
struct Renderer Renderer
Definition: c/Renderer.h:81
float getPixelWidth() const
Definition: Renderer.h:217
GLint getGLPrimitivesGenerated() const
Definition: Renderer.h:240
uint32_t _height
Definition: Renderer.h:272
KeyHandlerTable * _keyHandlers
Definition: Renderer.h:286
uint32_t _historyIndex
Definition: Renderer.h:283
Definition: Dimensions.h:74
void setColor(glm::vec4 color)
Definition: Renderer.h:227
uint32_t _fpsTarget
Definition: Renderer.h:269
QuadRenderer * _quadRenderer
Definition: Renderer.h:305
GLint getGLTimeElapsed() const
Definition: Renderer.h:242
float _curZ
Definition: Renderer.h:301
Definition: UntexturedQuadRenderable.h:82
float getFPS() const
Definition: Renderer.h:239
Shader _textShader
Definition: Renderer.h:303
struct Renderable Renderable
Definition: c/Renderable.h:73
float _nearClip
Definition: Renderer.h:275
std::map< RENDERER_PLATFORM_EVENT_TYPE, EventCallbackList * > EventCallbackMap
Definition: Renderer.h:178
float _aspectRatio
Definition: Renderer.h:273
GLint getGLSamplesPassed() const
Definition: Renderer.h:241
bool _run
Definition: Renderer.h:270
std::list< EventCallback > EventCallbackList
Definition: Renderer.h:177
float _lastFps
Definition: Renderer.h:312
std::function< void(uint32_t *)> cb[290]
Definition: Renderer.h:165
std::chrono::nanoseconds _tickGoal
Definition: Renderer.h:280
FT_Library * getFreeTypeLibrary()
Definition: Renderer.h:197
GLint _glSamples
Definition: Renderer.h:310
std::chrono::nanoseconds _sleepGoal
Definition: Renderer.h:281
RENDERER_PLATFORM_CONTEXT_TYPE _glContext
Definition: Renderer.h:291
uint32_t getWidth() const
Definition: Renderer.h:214
#define GUI_HISTORY_LENGTH
Definition: Renderer.h:157
std::pair< int, std::string > FontName
Definition: Renderer.h:179
uint32_t getHeight() const
Definition: Renderer.h:215
void setKeyHandlerTable(KeyHandlerTable *table)
Definition: Renderer.h:212
std::map< FontName, int > _fontIds
Definition: Renderer.h:296
std::chrono::high_resolution_clock::time_point _previousFrame
Definition: Renderer.h:279
TexturedQuadRenderer * _texturedQuadRenderer
Definition: Renderer.h:306
float getAspectRatio() const
Definition: Renderer.h:216
std::function< void(uint32_t *)> EventCallback
Definition: Renderer.h:175
int _curFont
Definition: Renderer.h:299
float _farClip
Definition: Renderer.h:276
glm::vec4 _curColor
Definition: Renderer.h:300
float _fovY
Definition: Renderer.h:274