I don't like to double post, but that post got long quick and I'm kinda hoping that maybe someone who knows more about Dolphins inner workings can tell me what's going on. There used to be a few problems with internal resolution (the fractional stuff), which I believe were all fixed with the last patch. I figured I'd see just how small I could make the patch and now I'm not sure why it still works.
Just wondering, if skid is around, can you see why this makes 3D work with all of the different internal resolution modes?
Without this change, the 3D Vision gets disabled whenever fractional/integral are used, but shouldn't "s_backbuffer_width / s_XFB_width" give the exact same answer as "(dst_rect.right - dst_rect.left) / s_XFB_width"? I've got the feeling that I'm making an embarrassing newbie mistake, or that I'm setting some weird random number for the scale... but it looks fine in the games I've tried.
Just wondering, if skid is around, can you see why this makes 3D work with all of the different internal resolution modes?
Code:
ComputeDrawRectangle(s_backbuffer_width, s_backbuffer_height, false, &dst_rect);
if(g_ActiveConfig.bUseRealXFB)
{
xScale = 1.0f;
yScale = 1.0f;
}
else
{
if(Render3dVision::isEnable3dVision())
{
// This works, yet the version in the else doesn't. No idea why.
xScale = (float)s_backbuffer_width / (float)s_XFB_width;
yScale = (float)s_backbuffer_height / (float)s_XFB_height;
}
else
{
xScale = (float)(dst_rect.right - dst_rect.left) / (float)s_XFB_width;
yScale = (float)(dst_rect.bottom - dst_rect.top) / (float)s_XFB_height;
}
}
Without this change, the 3D Vision gets disabled whenever fractional/integral are used, but shouldn't "s_backbuffer_width / s_XFB_width" give the exact same answer as "(dst_rect.right - dst_rect.left) / s_XFB_width"? I've got the feeling that I'm making an embarrassing newbie mistake, or that I'm setting some weird random number for the scale... but it looks fine in the games I've tried.