Rename internal canvas to view;

This commit is contained in:
bjorn 2017-10-22 03:34:45 -07:00
parent 5498a4e13e
commit d5b3a2243e
4 changed files with 33 additions and 33 deletions

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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);

View File

@ -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();