diff --git a/src/api/graphics.c b/src/api/graphics.c index 3684c3b0..f29d213c 100644 --- a/src/api/graphics.c +++ b/src/api/graphics.c @@ -278,14 +278,6 @@ int l_lovrGraphicsSetFont(lua_State* L) { return 0; } -int l_lovrGraphicsSetProjection(lua_State* L) { - float near = luaL_checknumber(L, 1); - float far = luaL_checknumber(L, 2); - float fov = luaL_checknumber(L, 3); - lovrGraphicsSetProjection(near, far, fov); - return 0; -} - int l_lovrGraphicsGetLineWidth(lua_State* L) { lua_pushnumber(L, lovrGraphicsGetLineWidth()); return 1; @@ -729,7 +721,6 @@ const luaL_Reg lovrGraphics[] = { { "setShader", l_lovrGraphicsSetShader }, { "getFont", l_lovrGraphicsGetFont }, { "setFont", l_lovrGraphicsSetFont }, - { "setProjection", l_lovrGraphicsSetProjection }, { "getLineWidth", l_lovrGraphicsGetLineWidth }, { "setLineWidth", l_lovrGraphicsSetLineWidth }, { "getPointSize", l_lovrGraphicsGetPointSize }, diff --git a/src/graphics/graphics.c b/src/graphics/graphics.c index b359df13..92ba9168 100644 --- a/src/graphics/graphics.c +++ b/src/graphics/graphics.c @@ -61,8 +61,7 @@ void lovrGraphicsReset() { state.transform = 0; state.canvas = 0; lovrGraphicsSetViewport(0, 0, lovrGraphicsGetWidth(), lovrGraphicsGetHeight()); - lovrGraphicsSetProjection(.1f, 100.f, 67 * M_PI / 180); // TODO customize via lovr.conf - lovrGraphicsBindFramebuffer(0); + lovrGraphicsSetPerspective(.1f, 100.f, 67 * M_PI / 180); lovrGraphicsSetShader(NULL); lovrGraphicsBindTexture(NULL); lovrGraphicsSetBackgroundColor(0, 0, 0, 0); @@ -235,16 +234,16 @@ mat4 lovrGraphicsGetProjection() { return state.canvases[state.canvas]->projection; } -void lovrGraphicsSetProjection(float near, float far, float fov) { +void lovrGraphicsSetProjection(mat4 projection) { + memcpy(state.canvases[state.canvas]->projection, projection, 16 * sizeof(float)); +} + +void lovrGraphicsSetPerspective(float near, float far, float fov) { int width, height; glfwGetWindowSize(window, &width, &height); mat4_perspective(state.canvases[state.canvas]->projection, near, far, fov, (float) width / height); } -void lovrGraphicsSetProjectionRaw(mat4 projection) { - memcpy(state.canvases[state.canvas]->projection, projection, 16 * sizeof(float)); -} - float lovrGraphicsGetLineWidth() { return state.lineWidth; } diff --git a/src/graphics/graphics.h b/src/graphics/graphics.h index 99756729..d18f80fa 100644 --- a/src/graphics/graphics.h +++ b/src/graphics/graphics.h @@ -101,8 +101,8 @@ void lovrGraphicsSetFont(Font* font); Texture* lovrGraphicsGetTexture(); void lovrGraphicsBindTexture(Texture* texture); mat4 lovrGraphicsGetProjection(); -void lovrGraphicsSetProjection(float near, float far, float fov); -void lovrGraphicsSetProjectionRaw(mat4 projection); +void lovrGraphicsSetProjection(mat4 projection); +void lovrGraphicsSetPerspective(float near, float far, float fov); float lovrGraphicsGetLineWidth(); void lovrGraphicsSetLineWidth(float width); float lovrGraphicsGetPointSize(); diff --git a/src/graphics/texture.c b/src/graphics/texture.c index 19f0d873..246a3a59 100644 --- a/src/graphics/texture.c +++ b/src/graphics/texture.c @@ -109,7 +109,7 @@ void lovrTextureBindFramebuffer(Texture* texture) { if (texture->projection == PROJECTION_ORTHOGRAPHIC) { float projection[16]; mat4_orthographic(projection, 0, w, 0, h, -1, 1); - lovrGraphicsSetProjectionRaw(projection); + lovrGraphicsSetProjection(projection); } else if (texture->projection == PROJECTION_PERSPECTIVE) { mat4 projection = lovrGraphicsGetProjection(); float b = projection[5]; @@ -122,7 +122,7 @@ void lovrTextureBindFramebuffer(Texture* texture) { float fov = 2.f * atan(1.f / b); float newProjection[16]; mat4_perspective(newProjection, near, far, fov, aspect); - lovrGraphicsSetProjectionRaw(newProjection); + lovrGraphicsSetProjection(newProjection); } } diff --git a/src/headset/openvr.c b/src/headset/openvr.c index 5a9faa0d..161bd7ad 100644 --- a/src/headset/openvr.c +++ b/src/headset/openvr.c @@ -634,7 +634,7 @@ void lovrHeadsetRenderTo(headsetRenderCallback callback, void* userdata) { lovrGraphicsPush(); lovrGraphicsOrigin(); lovrGraphicsMatrixTransform(transform); - lovrGraphicsSetProjectionRaw(projection); + lovrGraphicsSetProjection(projection); lovrGraphicsClear(1, 1); callback(eye, userdata); lovrGraphicsPop();