Skip to content

Commit d315e76

Browse files
Merge pull request #733 from lethal-guitar/fix-mac-hidpi-rendering-modded
Fix Mac high DPI rendering when modded
2 parents ee50189 + bc0e1aa commit d315e76

File tree

8 files changed

+18
-42
lines changed

8 files changed

+18
-42
lines changed

BUILDING.md

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,7 @@ docker run -ti --device=/dev/dri:/dev/dri --cap-add=SYS_PTRACE --security-opt se
250250

251251
### <a name="mac-build-instructions">OS X builds</a>
252252

253-
:exclamation: On Mojave (10.14) and older, non-Apple clang must be installed via Homebrew, Apple's clang does not have all required C++ library features. Starting with Catalina (10.15), Xcode's clang works fine.
254-
255-
The oldest OS/compiler combination that has worked for me is clang 7 on Sierra (10.12).
253+
:exclamation: On Mojave (10.14), non-Apple clang must be installed via Homebrew, Apple's clang does not have all required C++ library features. Starting with Catalina (10.15), Xcode's clang works fine.
256254

257255
### <a name="mac-build-instructions-1015">Catalina (10.15) or newer</a>
258256

@@ -266,6 +264,9 @@ mkdir build
266264
cd build
267265
cmake .. -DWARNINGS_AS_ERRORS=OFF
268266
make
267+
268+
# Now run it!
269+
./src/RigelEngine.app/Contents/MacOS/RigelEngine
269270
```
270271

271272
### <a name="mac-build-instructions-1014">Mojave (10.14) using clang 8</a>
@@ -290,28 +291,9 @@ mkdir build
290291
cd build
291292
cmake .. -DWARNINGS_AS_ERRORS=OFF
292293
make
293-
```
294-
295-
### <a name="mac-build-instructions-1013">High Sierra (10.13) or older using clang 7</a>
296-
297-
```bash
298-
# You might need to run brew update.
299-
brew install llvm@7 cmake sdl2 sdl2_mixer boost
300-
301-
# Set up environment variables so that CMake picks up the newly installed clang -
302-
# this is only necessary the first time.
303-
export rigel_llvm_path=`brew --prefix llvm@7`;
304-
export CC="$rigel_llvm_path/bin/clang";
305-
export CXX="$CC++";
306-
export CPPFLAGS="-I$rigel_llvm_path/include";
307-
export LDFLAGS="-L$rigel_llvm_path/lib -Wl,-rpath,$rigel_llvm_path/lib";
308-
unset rigel_llvm_path;
309294

310-
# Now, the regular build via CMake should work:
311-
mkdir build
312-
cd build
313-
cmake .. -DWARNINGS_AS_ERRORS=OFF
314-
make
295+
# Now run it!
296+
./src/RigelEngine.app/Contents/MacOS/RigelEngine
315297
```
316298

317299
### <a name="windows-build-instructions">Windows builds</a>

src/frontend/game.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ Game::Game(
258258
, mIsMinimized(false)
259259
, mCommandLineOptions(commandLineOptions)
260260
, mpUserProfile(pUserProfile)
261+
, mPreviousWindowSize(mRenderer.windowSize())
261262
, mWidescreenModeWasActive(
262263
pUserProfile->mOptions.mWidescreenModeOn &&
263264
renderer::canUseWidescreenMode(&mRenderer))
@@ -637,7 +638,8 @@ void Game::applyChangedOptions()
637638
if (
638639
widescreenModeActive != mWidescreenModeWasActive ||
639640
currentOptions.mPerElementUpscalingEnabled !=
640-
mPreviousOptions.mPerElementUpscalingEnabled)
641+
mPreviousOptions.mPerElementUpscalingEnabled ||
642+
mPreviousWindowSize != mRenderer.windowSize())
641643
{
642644
mRenderTarget = renderer::createFullscreenRenderTarget(
643645
&mRenderer, mpUserProfile->mOptions);
@@ -646,6 +648,7 @@ void Game::applyChangedOptions()
646648

647649
mPreviousOptions = mpUserProfile->mOptions;
648650
mWidescreenModeWasActive = widescreenModeActive;
651+
mPreviousWindowSize = mRenderer.windowSize();
649652
}
650653

651654

src/frontend/game.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ class Game : public IGameServiceProvider
142142
CommandLineOptions mCommandLineOptions;
143143
UserProfile* mpUserProfile;
144144
data::GameOptions mPreviousOptions;
145+
base::Size<int> mPreviousWindowSize;
145146
bool mWidescreenModeWasActive;
146147
std::filesystem::path mGamePathToSwitchTo;
147148

src/game_logic/game_world.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ GameWorld::GameWorld(
299299
mpRenderer,
300300
renderer::determineWidescreenViewPort(mpRenderer).mWidthPx,
301301
data::GameTraits::viewPortHeightPx)
302+
, mPreviousWindowSize(mpRenderer->windowSize())
302303
, mWidescreenModeWasOn(widescreenModeOn())
303304
, mPerElementUpscalingWasEnabled(mpOptions->mPerElementUpscalingEnabled)
304305
{
@@ -703,7 +704,8 @@ void GameWorld::render()
703704
{
704705
if (
705706
widescreenModeOn() != mWidescreenModeWasOn ||
706-
mpOptions->mPerElementUpscalingEnabled != mPerElementUpscalingWasEnabled)
707+
mpOptions->mPerElementUpscalingEnabled != mPerElementUpscalingWasEnabled ||
708+
mPreviousWindowSize != mpRenderer->windowSize())
707709
{
708710
mWaterEffectBuffer =
709711
renderer::createFullscreenRenderTarget(mpRenderer, *mpOptions);
@@ -843,6 +845,7 @@ void GameWorld::render()
843845

844846
mWidescreenModeWasOn = widescreenModeOn();
845847
mPerElementUpscalingWasEnabled = mpOptions->mPerElementUpscalingEnabled;
848+
mPreviousWindowSize = mpRenderer->windowSize();
846849
}
847850

848851

src/game_logic/game_world.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ class GameWorld : public entityx::Receiver<GameWorld>
157157
ui::IngameMessageDisplay mMessageDisplay;
158158
renderer::RenderTargetTexture mWaterEffectBuffer;
159159
renderer::RenderTargetTexture mLowResLayer;
160+
base::Size<int> mPreviousWindowSize;
160161
bool mWidescreenModeWasOn;
161162
bool mPerElementUpscalingWasEnabled;
162163

src/renderer/renderer.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,6 @@ struct Renderer::Impl
401401
RenderMode mLastKnownRenderMode = RenderMode::SpriteBatch;
402402

403403
// cold
404-
base::Size<int> mMaxWindowSize;
405404
int mNumTextures = 0;
406405
int mNumInternalTextures = 0;
407406
TextureId mWaterSurfaceAnimTexture = 0;
@@ -429,11 +428,6 @@ struct Renderer::Impl
429428
{"position", "texCoordMask"})
430429
, mWindowSize(getSize(pWindow))
431430
, mpWindow(pWindow)
432-
, mMaxWindowSize([pWindow]() {
433-
SDL_DisplayMode displayMode;
434-
sdl_utils::check(SDL_GetDesktopDisplayMode(0, &displayMode));
435-
return base::Size<int>{displayMode.w, displayMode.h};
436-
}())
437431
{
438432
// General configuration
439433
glDisable(GL_DEPTH_TEST);
@@ -1323,12 +1317,6 @@ base::Size<int> Renderer::windowSize() const
13231317
}
13241318

13251319

1326-
base::Size<int> Renderer::maxWindowSize() const
1327-
{
1328-
return mpImpl->mMaxWindowSize;
1329-
}
1330-
1331-
13321320
void Renderer::setRenderTarget(const TextureId target)
13331321
{
13341322
mpImpl->setRenderTarget(target);

src/renderer/upscaling_utils.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,7 @@ RenderTargetTexture createFullscreenRenderTarget(
125125
if (options.mPerElementUpscalingEnabled)
126126
{
127127
return RenderTargetTexture{
128-
pRenderer,
129-
pRenderer->maxWindowSize().width,
130-
pRenderer->maxWindowSize().height};
128+
pRenderer, pRenderer->windowSize().width, pRenderer->windowSize().height};
131129
}
132130
else
133131
{

src/ui/options_menu.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,7 @@ void OptionsMenu::drawCreditsBox(const engine::TimeDelta dt)
709709

710710
ImGui::NewLine();
711711

712-
centeredText("OpenSUSE package by mnhauke (https://github.com/mnhauke)");
712+
centeredText("openSUSE package by mnhauke (https://github.com/mnhauke)");
713713

714714
ImGui::NewLine();
715715

0 commit comments

Comments
 (0)