I think you could fudge this although there's no doubt a much easier way!
I haven't AppGameKit here to test with so commands might not be 100% right but here goes...
- In core.cpp there's a CreateWin32Window() method which you can modify to create a fullscreen window that matches the current desktop res.
IIRC there is already a Rectangle variable in there that stores the desktop res so you can simply use those as input parameters in the later CreateWindow() call that actually creates the window.
It's pretty straight forward. It can't be too tricky if I can understand it
- Your virtual res needs to match this so we get no scaling at all.
Assuming your intended game res is smaller than your desktop res (which I believe is your problem) then set your virtual res to match the device width (obv agk::SetVirtualResolution( agk::GetDeviceWidth(), agk::GetDeviceHeigth() ). I think you still need this otherwise AppGameKit defaults to the percentage system(?) Like I say, I can't test that now.
- Your game should now display unscaled.
- The game screen will be positioned top-left so you will need to add a camera offset to centralise it.
offsetX = ( agk::GetDeviceWidth()- yourGameWidth )/2;
offsetY = ( agk::GetDeviceHeigth()- yourGameHeight )/2;
agk::SetCameraPosition( -offsetX , -offsetY )
- If you don't want anything to appear that is outside of your intended game screen then use agk::SetScissor(offsetX , offsetY, offsetX + yourGameWidth, offsetY + yourGameHeight ) to effectively create the black borders.
- If you're already panning the camera then you will need to adjust it's position and SetScissor() accordingly.
Like I say, a completely untested theory and it might not be good for performance, but it should/might work.
If you're still struggling I'll have a look tonight if I find time.