How I set up low-res/pixel-perfect rendering in libGDX
- Resizes to any screen size (adds black bars depending on aspect ratio)
- Rotation, scaling, etc. are all pixel perfect (see images below)
- First, the game renders all the sprites to an
FrameBuffer
at a set resolution - The
FrameBuffer
is then scaled to the screen size - There are two cameras, one that only looks at the
FrameBuffer
(calledfboCamera
) - The other camera (simply called
camera
), is the one that actually follows the player
![bad](https://private-user-images.githubusercontent.com/77545656/257055665-d92d009f-b3e9-4c02-8689-299ae323d050.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0OTcyNDMsIm5iZiI6MTcyMTQ5Njk0MywicGF0aCI6Ii83NzU0NTY1Ni8yNTcwNTU2NjUtZDkyZDAwOWYtYjNlOS00YzAyLTg2ODktMjk5YWUzMjNkMDUwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIwVDE3MzU0M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU3NDA0YjYwNDgyNzk3Y2JjZDVlYjMzZjRkYmEyYjVmOGY4ZjcwZGEyMWVmNzgwOWY3NTYwMGNiZmM2Y2Q2OGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.jCltZPg7hT4LvOJeQ1PdhGTpfV9USOoVE-m9mFRsb1A)
![image](https://private-user-images.githubusercontent.com/77545656/257055854-f252de3b-7d37-40d9-a704-958cb3b8732a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0OTcyNDMsIm5iZiI6MTcyMTQ5Njk0MywicGF0aCI6Ii83NzU0NTY1Ni8yNTcwNTU4NTQtZjI1MmRlM2ItN2QzNy00MGQ5LWE3MDQtOTU4Y2IzYjg3MzJhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzIwVDE3MzU0M1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBmYjNlNDM4NjMyNThmYTkyM2E5OTBjN2M1YWMzZjUwYzhkNWM1MmI0Y2I3ZTgwMzIyODEyZWM3MTJhNzA2MjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.aS53FWYg6mBTiEeSrusycK2tz4WxJsV_kY3qnjTkOnk)