diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp index a24dcd47dc..ad12a4b773 100644 --- a/src/d/d_camera.cpp +++ b/src/d/d_camera.cpp @@ -10997,7 +10997,14 @@ static int camera_draw(camera_process_class* i_this) { #endif int trim_height = body->TrimHeight(); + + #if TARGET_PC + trim_height *= viewport->height / FB_HEIGHT; + window->setScissor(0.0f, trim_height, viewport->width, viewport->height - trim_height * 2.0f); + #else window->setScissor(0.0f, trim_height, FB_WIDTH, FB_HEIGHT - trim_height * 2.0f); + #endif + C_MTXPerspective(process->view.projMtx, process->view.fovy, process->view.aspect, process->view.near_, process->view.far_); mDoMtx_lookAt(process->view.viewMtx, &process->view.lookat.eye, &process->view.lookat.center, &process->view.lookat.up, process->view.bank); diff --git a/src/m_Do/m_Do_graphic.cpp b/src/m_Do/m_Do_graphic.cpp index 1264e54dd8..94ba2fe6ce 100644 --- a/src/m_Do/m_Do_graphic.cpp +++ b/src/m_Do/m_Do_graphic.cpp @@ -1081,7 +1081,13 @@ static void trimming(view_class* param_0, view_port_class* param_1) { GXSetDither(GX_TRUE); GXSetNumIndStages(0); Mtx44 ortho; + + #if TARGET_PC + C_MTXOrtho(ortho, 0.0f, param_1->height, 0.0f, param_1->width, 0.0f, 10.0f); + #else C_MTXOrtho(ortho, 0.0f, FB_HEIGHT, 0.0f, FB_WIDTH, 0.0f, 10.0f); + #endif + GXLoadPosMtxImm(cMtx_getIdentity(), 0); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); @@ -1089,6 +1095,17 @@ static void trimming(view_class* param_0, view_port_class* param_1) { GXSetProjection(ortho, GX_ORTHOGRAPHIC); GXSetCurrentMtx(0); GXBegin(GX_QUADS, GX_VTXFMT0, 8); + + #if TARGET_PC + GXPosition3s16(0, 0, -5); + GXPosition3s16(param_1->width, 0, -5); + GXPosition3s16(param_1->width, sc_top, -5); + GXPosition3s16(0, sc_top, -5); + GXPosition3s16(0, sc_bottom, -5); + GXPosition3s16(param_1->width, sc_bottom, -5); + GXPosition3s16(param_1->width, param_1->height, -5); + GXPosition3s16(0, param_1->height, -5); + #else GXPosition3s16(0, 0, -5); GXPosition3s16(FB_WIDTH, 0, -5); GXPosition3s16(FB_WIDTH, sc_top, -5); @@ -1097,6 +1114,8 @@ static void trimming(view_class* param_0, view_port_class* param_1) { GXPosition3s16(FB_WIDTH, sc_bottom, -5); GXPosition3s16(FB_WIDTH, FB_HEIGHT, -5); GXPosition3s16(0, FB_HEIGHT, -5); + #endif + GXEnd(); } GXSetScissor(param_1->scissor.x_orig, param_1->scissor.y_orig, param_1->scissor.width,