mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-13 07:57:58 +00:00
- took GetMaxViewPitch out of renderer interfaces.
With live switching and both renderers on the same backend the old approach will no longer work.
This commit is contained in:
parent
9a919960c9
commit
51bf2eb9fa
6 changed files with 29 additions and 40 deletions
|
@ -1005,7 +1005,6 @@ struct FGLInterface : public FRenderer
|
||||||
void RenderTextureView (FCanvasTexture *self, AActor *viewpoint, double fov) override;
|
void RenderTextureView (FCanvasTexture *self, AActor *viewpoint, double fov) override;
|
||||||
void PreprocessLevel() override;
|
void PreprocessLevel() override;
|
||||||
|
|
||||||
int GetMaxViewPitch(bool down) override;
|
|
||||||
void SetClearColor(int color) override;
|
void SetClearColor(int color) override;
|
||||||
uint32_t GetCaps() override;
|
uint32_t GetCaps() override;
|
||||||
};
|
};
|
||||||
|
@ -1022,19 +1021,6 @@ void FGLInterface::Precache(uint8_t *texhitlist, TMap<PClassActor*, bool> &actor
|
||||||
gl_PrecacheTexture(texhitlist, actorhitlist);
|
gl_PrecacheTexture(texhitlist, actorhitlist);
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
|
||||||
//
|
|
||||||
// Get max. view angle (renderer specific information so it goes here now)
|
|
||||||
//
|
|
||||||
//===========================================================================
|
|
||||||
|
|
||||||
EXTERN_CVAR(Float, maxviewpitch)
|
|
||||||
|
|
||||||
int FGLInterface::GetMaxViewPitch(bool down)
|
|
||||||
{
|
|
||||||
return int(maxviewpitch);
|
|
||||||
}
|
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|
|
@ -730,13 +730,38 @@ bool player_t::GetPainFlash(FName type, PalEntry *color) const
|
||||||
//
|
//
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
|
EXTERN_CVAR(Float, maxviewpitch)
|
||||||
|
EXTERN_CVAR(Bool, r_polyrenderer)
|
||||||
|
EXTERN_CVAR(Bool, cl_oldfreelooklimit);
|
||||||
|
extern int currentrenderer;
|
||||||
|
|
||||||
|
|
||||||
|
static int GetSoftPitch(bool down)
|
||||||
|
{
|
||||||
|
int MAX_DN_ANGLE = MIN(56, (int)maxviewpitch); // Max looking down angle
|
||||||
|
int MAX_UP_ANGLE = MIN(32, (int)maxviewpitch); // Max looking up angle
|
||||||
|
return (down ? MAX_DN_ANGLE : ((cl_oldfreelooklimit) ? MAX_UP_ANGLE : MAX_DN_ANGLE));
|
||||||
|
}
|
||||||
|
|
||||||
void player_t::SendPitchLimits() const
|
void player_t::SendPitchLimits() const
|
||||||
{
|
{
|
||||||
if (this - players == consoleplayer)
|
if (this - players == consoleplayer)
|
||||||
{
|
{
|
||||||
|
int uppitch, downpitch;
|
||||||
|
|
||||||
|
if (currentrenderer == 0 && !r_polyrenderer)
|
||||||
|
{
|
||||||
|
uppitch = GetSoftPitch(false);
|
||||||
|
downpitch = GetSoftPitch(true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uppitch = downpitch = (int)maxviewpitch;
|
||||||
|
}
|
||||||
|
|
||||||
Net_WriteByte(DEM_SETPITCHLIMIT);
|
Net_WriteByte(DEM_SETPITCHLIMIT);
|
||||||
Net_WriteByte(Renderer->GetMaxViewPitch(false)); // up
|
Net_WriteByte(uppitch);
|
||||||
Net_WriteByte(Renderer->GetMaxViewPitch(true)); // down
|
Net_WriteByte(downpitch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,6 @@ struct FRenderer
|
||||||
// draws player sprites with hardware acceleration (only useful for software rendering)
|
// draws player sprites with hardware acceleration (only useful for software rendering)
|
||||||
virtual void DrawRemainingPlayerSprites() {}
|
virtual void DrawRemainingPlayerSprites() {}
|
||||||
|
|
||||||
virtual int GetMaxViewPitch(bool down) = 0; // return value is in plain degrees
|
|
||||||
|
|
||||||
virtual void OnModeSet () {}
|
virtual void OnModeSet () {}
|
||||||
virtual void SetClearColor(int color) = 0;
|
virtual void SetClearColor(int color) = 0;
|
||||||
virtual void RenderTextureView (FCanvasTexture *tex, AActor *viewpoint, double fov) = 0;
|
virtual void RenderTextureView (FCanvasTexture *tex, AActor *viewpoint, double fov) = 0;
|
||||||
|
|
|
@ -235,13 +235,6 @@ void FSoftwareRenderer::DrawRemainingPlayerSprites()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int FSoftwareRenderer::GetMaxViewPitch(bool down)
|
|
||||||
{
|
|
||||||
int MAX_DN_ANGLE = MIN(56, (int)maxviewpitch); // Max looking down angle
|
|
||||||
int MAX_UP_ANGLE = MIN(32, (int)maxviewpitch); // Max looking up angle
|
|
||||||
return (r_polyrenderer) ? int(maxviewpitch) : (down ? MAX_DN_ANGLE : ((cl_oldfreelooklimit) ? MAX_UP_ANGLE : MAX_DN_ANGLE));
|
|
||||||
}
|
|
||||||
|
|
||||||
void FSoftwareRenderer::OnModeSet ()
|
void FSoftwareRenderer::OnModeSet ()
|
||||||
{
|
{
|
||||||
mScene.ScreenResized();
|
mScene.ScreenResized();
|
||||||
|
|
|
@ -21,8 +21,6 @@ struct FSoftwareRenderer : public FRenderer
|
||||||
// draws player sprites with hardware acceleration (only useful for software rendering)
|
// draws player sprites with hardware acceleration (only useful for software rendering)
|
||||||
void DrawRemainingPlayerSprites() override;
|
void DrawRemainingPlayerSprites() override;
|
||||||
|
|
||||||
int GetMaxViewPitch(bool down) override;
|
|
||||||
|
|
||||||
void OnModeSet() override;
|
void OnModeSet() override;
|
||||||
void SetClearColor(int color) override;
|
void SetClearColor(int color) override;
|
||||||
void RenderTextureView (FCanvasTexture *tex, AActor *viewpoint, double fov) override;
|
void RenderTextureView (FCanvasTexture *tex, AActor *viewpoint, double fov) override;
|
||||||
|
|
|
@ -98,13 +98,6 @@ CUSTOM_CVAR(Int, vid_gpuswitch, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Software OpenGL canvas
|
|
||||||
CUSTOM_CVAR(Bool, vid_glswfb, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
|
|
||||||
{
|
|
||||||
if ((self ? 1 : 0) != currentcanvas)
|
|
||||||
Printf("You must restart " GAMENAME " for this change to take effect.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
// [ZDoomGL]
|
// [ZDoomGL]
|
||||||
CUSTOM_CVAR (Int, vid_renderer, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
|
CUSTOM_CVAR (Int, vid_renderer, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
|
||||||
{
|
{
|
||||||
|
@ -195,15 +188,11 @@ static void I_DeleteRenderer()
|
||||||
void I_CreateRenderer()
|
void I_CreateRenderer()
|
||||||
{
|
{
|
||||||
currentrenderer = vid_renderer;
|
currentrenderer = vid_renderer;
|
||||||
currentcanvas = vid_glswfb;
|
|
||||||
if (currentrenderer == 1)
|
if (currentrenderer == 1)
|
||||||
Printf("Renderer: OpenGL\n");
|
Printf("Renderer: OpenGL\n");
|
||||||
else if (currentcanvas == 1)
|
|
||||||
Printf("Renderer: Software on OpenGL\n");
|
|
||||||
else if (currentcanvas == 0)
|
|
||||||
Printf("Renderer: Software on Direct3D\n");
|
|
||||||
else
|
else
|
||||||
Printf("Renderer: Unknown\n");
|
Printf("Renderer: Software on OpenGL\n");
|
||||||
|
|
||||||
if (Renderer == NULL)
|
if (Renderer == NULL)
|
||||||
{
|
{
|
||||||
if (currentrenderer==1) Renderer = gl_CreateInterface();
|
if (currentrenderer==1) Renderer = gl_CreateInterface();
|
||||||
|
|
Loading…
Reference in a new issue