mirror of https://github.com/bjornbytes/lovr.git
Improve Vive rendering;
This commit is contained in:
parent
93f007f329
commit
8ab7c06612
|
@ -226,6 +226,10 @@ void lovrGraphicsScale(float x, float y, float z) {
|
|||
mat4_scale(vec_last(&state.transforms), x, y, z);
|
||||
}
|
||||
|
||||
void lovrGraphicsTransform(mat4 transform) {
|
||||
mat4_multiply(vec_last(&state.transforms), transform);
|
||||
}
|
||||
|
||||
void lovrGraphicsGetDimensions(int* width, int* height) {
|
||||
glfwGetFramebufferSize(window, width, height);
|
||||
}
|
||||
|
|
|
@ -63,6 +63,7 @@ void lovrGraphicsOrigin();
|
|||
void lovrGraphicsTranslate(float x, float y, float z);
|
||||
void lovrGraphicsRotate(float w, float x, float y, float z);
|
||||
void lovrGraphicsScale(float x, float y, float z);
|
||||
void lovrGraphicsTransform(mat4 transform);
|
||||
void lovrGraphicsGetDimensions(int* width, int* height);
|
||||
void lovrGraphicsSetShapeData(float* data, int count);
|
||||
void lovrGraphicsDrawShape();
|
||||
|
|
|
@ -209,26 +209,24 @@ void viveRenderTo(void* headset, headsetRenderCallback callback, void* userdata)
|
|||
|
||||
matrix = state->vrSystem->GetEyeToHeadTransform(eye).m;
|
||||
mat4_invert(mat4_fromMat34(eyeMatrix, matrix));
|
||||
mat4 transformMatrix = mat4_multiply(eyeMatrix, headMatrix);
|
||||
|
||||
float near = state->clipNear;
|
||||
float far = state->clipFar;
|
||||
matrix = state->vrSystem->GetProjectionMatrix(eye, near, far, graphicsConvention).m;
|
||||
mat4_fromMat44(projectionMatrix, matrix);
|
||||
lovrGraphicsSetProjectionRaw(projectionMatrix);
|
||||
|
||||
Shader* shader = lovrGraphicsGetShader();
|
||||
if (shader) {
|
||||
int lovrTransformId = lovrShaderGetUniformId(shader, "lovrTransform");
|
||||
mat4 transformMatrix = mat4_multiply(eyeMatrix, headMatrix);
|
||||
lovrShaderSendFloatMat4(shader, lovrTransformId, transformMatrix);
|
||||
}
|
||||
|
||||
glEnable(GL_MULTISAMPLE);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, state->framebuffer);
|
||||
glViewport(0, 0, state->renderWidth, state->renderHeight);
|
||||
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
lovrGraphicsClear(1, 1);
|
||||
lovrGraphicsPush();
|
||||
lovrGraphicsOrigin();
|
||||
lovrGraphicsTransform(transformMatrix);
|
||||
lovrGraphicsSetProjectionRaw(projectionMatrix);
|
||||
callback(i, userdata);
|
||||
lovrGraphicsPop();
|
||||
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
glDisable(GL_MULTISAMPLE);
|
||||
|
|
Loading…
Reference in New Issue