diff --git a/tools/texturev/texturev.cpp b/tools/texturev/texturev.cpp index 9aca1ad53..efd9ee31e 100644 --- a/tools/texturev/texturev.cpp +++ b/tools/texturev/texturev.cpp @@ -1478,13 +1478,13 @@ int _main_(int _argc, char** _argv) switch (orientation) { default: - case bimg::Orientation::R0: cmdExec("view orientation\nview orientation z 0"); break; - case bimg::Orientation::R90: cmdExec("view orientation\nview orientation z -90"); break; + case bimg::Orientation::R0: cmdExec("view orientation\nview orientation z 0"); break; + case bimg::Orientation::R90: cmdExec("view orientation\nview orientation z -90"); break; case bimg::Orientation::R180: cmdExec("view orientation\nview orientation z -180"); break; case bimg::Orientation::R270: cmdExec("view orientation\nview orientation z -270"); break; case bimg::Orientation::HFlip: cmdExec("view orientation\nview orientation x -180"); break; - case bimg::Orientation::HFlipR90: cmdExec("view orientation\nview orientation x -180\nview orientation z -90"); break; - case bimg::Orientation::HFlipR270: cmdExec("view orientation\nview orientation x -180\nview orientation z -270"); break; + case bimg::Orientation::HFlipR90: cmdExec("view orientation\nview orientation z -90\nview orientation x -180"); break; + case bimg::Orientation::HFlipR270: cmdExec("view orientation\nview orientation z -270\nview orientation x -180"); break; case bimg::Orientation::VFlip: cmdExec("view orientation\nview orientation y -180"); break; } @@ -1583,7 +1583,7 @@ int _main_(int _argc, char** _argv) , py+height/2.0f , py-height/2.0f , -10.0f - , 10.0f + , 10.0f , 0.0f , caps->homogeneousDepth ); @@ -1592,10 +1592,19 @@ int _main_(int _argc, char** _argv) bgfx::dbgTextClear(); + float orientation[16]; + bx::mtxRotateXYZ(orientation, view.m_flipH, view.m_flipV, angle.getValue()+view.m_orientation); + if (view.m_fit) { - scale.set(bx::fmin(float(width) / float(view.m_info.width) - , float(height) / float(view.m_info.height) ) + float wh[3] = { float(view.m_info.width), float(view.m_info.height), 0.0f }; + float result[3]; + bx::vec3MulMtx(result, wh, orientation); + result[0] = bx::fround(bx::fabsolute(result[0]) ); + result[1] = bx::fround(bx::fabsolute(result[1]) ); + + scale.set(bx::fmin(float(width) / result[0] + , float(height) / result[1]) , 0.1f ); } @@ -1621,13 +1630,10 @@ int _main_(int _argc, char** _argv) , view.m_abgr ); - float rotz[16]; - bx::mtxRotateXYZ(rotz, view.m_flipH, view.m_flipV, angle.getValue()+view.m_orientation); - bgfx::setTransform(rotz); + bgfx::setTransform(orientation); float mtx[16]; bx::mtxRotateXY(mtx, angx.getValue(), angy.getValue() ); - bgfx::setUniform(u_mtx, mtx); mip.set(float(view.m_mip), 0.5f);