diff --git a/src/api/types/texture.c b/src/api/types/texture.c index 1aa550d1..a05d2580 100644 --- a/src/api/types/texture.c +++ b/src/api/types/texture.c @@ -45,12 +45,12 @@ int l_lovrTextureGetWrap(lua_State* L) { int l_lovrTextureRenderTo(lua_State* L) { Texture* texture = luax_checktype(L, 1, Texture); - lovrGraphicsPushCanvas(); + lovrGraphicsPushView(); lovrTextureBindFramebuffer(texture); lua_settop(L, 2); lua_call(L, 0, 0); lovrTextureResolveMSAA(texture); - lovrGraphicsPopCanvas(); + lovrGraphicsPopView(); return 0; } diff --git a/src/graphics/graphics.c b/src/graphics/graphics.c index f482e699..aa568aa6 100644 --- a/src/graphics/graphics.c +++ b/src/graphics/graphics.c @@ -51,7 +51,7 @@ void lovrGraphicsReset() { int h = lovrGraphicsGetHeight(); float projection[16]; state.transform = 0; - state.canvas = 0; + state.view = 0; state.defaultShader = -1; lovrGraphicsSetBackgroundColor((Color) { 0, 0, 0, 255 }); lovrGraphicsSetBlendMode(BLEND_ALPHA, BLEND_ALPHA_MULTIPLY); @@ -88,7 +88,7 @@ void lovrGraphicsPrepare() { mat4 model = state.transforms[state.transform][MATRIX_MODEL]; mat4 view = state.transforms[state.transform][MATRIX_VIEW]; - mat4 projection = state.canvases[state.canvas].projection; + mat4 projection = state.views[state.view].projection; lovrShaderSetMatrix(shader, "lovrModel", model, 16); lovrShaderSetMatrix(shader, "lovrView", view, 16); lovrShaderSetMatrix(shader, "lovrProjection", projection, 16); @@ -945,42 +945,42 @@ void lovrGraphicsPrint(const char* str, mat4 transform, float wrap, HorizontalAl } // Internal State -void lovrGraphicsPushCanvas() { - if (++state.canvas >= MAX_CANVASES) { - lovrThrow("Canvas overflow"); +void lovrGraphicsPushView() { + if (++state.view >= MAX_VIEWS) { + lovrThrow("View overflow"); } - memcpy(&state.canvases[state.canvas], &state.canvases[state.canvas - 1], sizeof(CanvasState)); + memcpy(&state.views[state.view], &state.views[state.view - 1], sizeof(View)); } -void lovrGraphicsPopCanvas() { - if (--state.canvas < 0) { - lovrThrow("Canvas underflow"); +void lovrGraphicsPopView() { + if (--state.view < 0) { + lovrThrow("View underflow"); } - int* viewport = state.canvases[state.canvas].viewport; + int* viewport = state.views[state.view].viewport; lovrGraphicsSetViewport(viewport[0], viewport[1], viewport[2], viewport[3]); - lovrGraphicsBindFramebuffer(state.canvases[state.canvas].framebuffer); + lovrGraphicsBindFramebuffer(state.views[state.view].framebuffer); } mat4 lovrGraphicsGetProjection() { - return state.canvases[state.canvas].projection; + return state.views[state.view].projection; } void lovrGraphicsSetProjection(mat4 projection) { - memcpy(state.canvases[state.canvas].projection, projection, 16 * sizeof(float)); + memcpy(state.views[state.view].projection, projection, 16 * sizeof(float)); } void lovrGraphicsSetViewport(int x, int y, int w, int h) { - state.canvases[state.canvas].viewport[0] = x; - state.canvases[state.canvas].viewport[1] = y; - state.canvases[state.canvas].viewport[2] = w; - state.canvases[state.canvas].viewport[3] = h; + state.views[state.view].viewport[0] = x; + state.views[state.view].viewport[1] = y; + state.views[state.view].viewport[2] = w; + state.views[state.view].viewport[3] = h; glViewport(x, y, w, h); } void lovrGraphicsBindFramebuffer(int framebuffer) { - state.canvases[state.canvas].framebuffer = framebuffer; + state.views[state.view].framebuffer = framebuffer; glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); } diff --git a/src/graphics/graphics.h b/src/graphics/graphics.h index e97cbc6b..0d62a889 100644 --- a/src/graphics/graphics.h +++ b/src/graphics/graphics.h @@ -7,7 +7,7 @@ #pragma once -#define MAX_CANVASES 4 +#define MAX_VIEWS 4 #define MAX_TRANSFORMS 60 #define INTERNAL_TRANSFORMS 4 #define DEFAULT_SHADER_COUNT 4 @@ -49,6 +49,11 @@ typedef enum { COMPARE_GREATER = GL_GREATER } CompareMode; +typedef enum { + MATRIX_MODEL, + MATRIX_VIEW +} MatrixType; + typedef struct { int initialized; float pointSizes[2]; @@ -61,12 +66,7 @@ typedef struct { int framebuffer; float projection[16]; int viewport[4]; -} CanvasState; - -typedef enum { - MATRIX_MODEL, - MATRIX_VIEW -} MatrixType; +} View; typedef struct { GLFWwindow* window; @@ -97,8 +97,8 @@ typedef struct { uint32_t streamIBO; vec_float_t streamData; vec_uint_t streamIndices; - CanvasState canvases[MAX_CANVASES]; - int canvas; + View views[MAX_VIEWS]; + int view; Texture* textures[MAX_TEXTURES]; uint32_t program; uint32_t vertexArray; @@ -168,8 +168,8 @@ void lovrGraphicsSkybox(Texture* texture, float angle, float ax, float ay, float void lovrGraphicsPrint(const char* str, mat4 transform, float wrap, HorizontalAlign halign, VerticalAlign valign); // Internal State -void lovrGraphicsPushCanvas(); -void lovrGraphicsPopCanvas(); +void lovrGraphicsPushView(); +void lovrGraphicsPopView(); mat4 lovrGraphicsGetProjection(); void lovrGraphicsSetProjection(mat4 projection); void lovrGraphicsSetViewport(int x, int y, int w, int h); diff --git a/src/headset/openvr.c b/src/headset/openvr.c index 67ae2fd1..ec2c9650 100644 --- a/src/headset/openvr.c +++ b/src/headset/openvr.c @@ -691,7 +691,7 @@ void lovrHeadsetRenderTo(headsetRenderCallback callback, void* userdata) { float head[16], transform[16], projection[16]; float (*matrix)[4]; - lovrGraphicsPushCanvas(); + lovrGraphicsPushView(); state.isRendering = 1; state.compositor->WaitGetPoses(state.renderPoses, 16, NULL, 0); @@ -737,7 +737,7 @@ void lovrHeadsetRenderTo(headsetRenderCallback callback, void* userdata) { } state.isRendering = 0; - lovrGraphicsPopCanvas(); + lovrGraphicsPopView(); if (state.isMirrored) { Color oldColor = lovrGraphicsGetColor();