mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2025-01-18 14:41:40 +00:00
- Moved the code that renders the view from D_Display into a virtual function
of the frame buffer so I can get rid of the last remaining renderer check outside the display code in GZDoom. - made V_SetResolution a virtual function in IVideo. It's probably not a perfect solution but at least it allows overriding it (which I need in GZDoom.) Note: There's a lot of redundancy between hardware.cpp/h in the SDL and Win32 folders so some cleaning up might be a good idea. SVN r692 (trunk)
This commit is contained in:
parent
a9dc8ddce3
commit
e06c645310
6 changed files with 36 additions and 9 deletions
|
@ -7,6 +7,13 @@ January 10, 2008
|
||||||
- Applied Karate Chris's TEAMINFO logo patch.
|
- Applied Karate Chris's TEAMINFO logo patch.
|
||||||
|
|
||||||
January 10, 2008 (Changes by Graf Zahl)
|
January 10, 2008 (Changes by Graf Zahl)
|
||||||
|
- Moved the code that renders the view from D_Display into a virtual function
|
||||||
|
of the frame buffer so I can get rid of the last remaining renderer check
|
||||||
|
outside the display code in GZDoom.
|
||||||
|
- made V_SetResolution a virtual function in IVideo. It's probably not a perfect
|
||||||
|
solution but at least it allows overriding it (which I need in GZDoom.)
|
||||||
|
Note: There's a lot of redundancy between hardware.cpp/h in the SDL and Win32
|
||||||
|
folders so some cleaning up might be a good idea.
|
||||||
- defined a constant for the crosshair menu entry's index to get a direct
|
- defined a constant for the crosshair menu entry's index to get a direct
|
||||||
reference out of the function code. In GZDoom the menu contains different
|
reference out of the function code. In GZDoom the menu contains different
|
||||||
information.
|
information.
|
||||||
|
|
|
@ -89,6 +89,7 @@
|
||||||
#include "st_start.h"
|
#include "st_start.h"
|
||||||
#include "templates.h"
|
#include "templates.h"
|
||||||
#include "teaminfo.h"
|
#include "teaminfo.h"
|
||||||
|
#include "hardware.h"
|
||||||
|
|
||||||
// MACROS ------------------------------------------------------------------
|
// MACROS ------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -466,7 +467,7 @@ void D_Display ()
|
||||||
if (setmodeneeded)
|
if (setmodeneeded)
|
||||||
{
|
{
|
||||||
// Change screen mode.
|
// Change screen mode.
|
||||||
if (V_SetResolution (NewWidth, NewHeight, NewBits))
|
if (Video->SetResolution (NewWidth, NewHeight, NewBits))
|
||||||
{
|
{
|
||||||
// Recalculate various view parameters.
|
// Recalculate various view parameters.
|
||||||
setsizeneeded = true;
|
setsizeneeded = true;
|
||||||
|
@ -556,10 +557,7 @@ void D_Display ()
|
||||||
screen->SetBlendingRect(viewwindowx, viewwindowy,
|
screen->SetBlendingRect(viewwindowx, viewwindowy,
|
||||||
viewwindowx + realviewwidth, viewwindowy + realviewheight);
|
viewwindowx + realviewwidth, viewwindowy + realviewheight);
|
||||||
P_CheckPlayerSprites();
|
P_CheckPlayerSprites();
|
||||||
R_RenderActorView (players[consoleplayer].mo);
|
screen->RenderView(&players[consoleplayer]);
|
||||||
R_DetailDouble (); // [RH] Apply detail mode expansion
|
|
||||||
// [RH] Let cameras draw onto textures that were visible this frame.
|
|
||||||
FCanvasTextureInfo::UpdateAll ();
|
|
||||||
if ((hw2d = screen->Begin2D(viewactive)))
|
if ((hw2d = screen->Begin2D(viewactive)))
|
||||||
{
|
{
|
||||||
// Redraw everything every frame when using 2D accel
|
// Redraw everything every frame when using 2D accel
|
||||||
|
|
|
@ -49,6 +49,9 @@ class IVideo
|
||||||
|
|
||||||
virtual void StartModeIterator (int bits, bool fs) = 0;
|
virtual void StartModeIterator (int bits, bool fs) = 0;
|
||||||
virtual bool NextMode (int *width, int *height, bool *letterbox) = 0;
|
virtual bool NextMode (int *width, int *height, bool *letterbox) = 0;
|
||||||
|
|
||||||
|
virtual bool SetResolution (int width, int height, int bits);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void I_InitGraphics ();
|
void I_InitGraphics ();
|
||||||
|
|
|
@ -1008,6 +1008,21 @@ void DFrameBuffer::CopyPixelData(BYTE * buffer, int texpitch, int texheight, int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//===========================================================================
|
||||||
|
//
|
||||||
|
// Render the view
|
||||||
|
//
|
||||||
|
//===========================================================================
|
||||||
|
void DFrameBuffer::RenderView(player_t *player)
|
||||||
|
{
|
||||||
|
R_RenderActorView (player->mo);
|
||||||
|
R_DetailDouble (); // [RH] Apply detail mode expansion
|
||||||
|
// [RH] Let cameras draw onto textures that were visible this frame.
|
||||||
|
FCanvasTextureInfo::UpdateAll ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FNativePalette::~FNativePalette()
|
FNativePalette::~FNativePalette()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -1106,7 +1121,7 @@ bool V_DoModeSetup (int width, int height, int bits)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool V_SetResolution (int width, int height, int bits)
|
bool IVideo::SetResolution (int width, int height, int bits)
|
||||||
{
|
{
|
||||||
int oldwidth, oldheight;
|
int oldwidth, oldheight;
|
||||||
int oldbits;
|
int oldbits;
|
||||||
|
@ -1253,7 +1268,7 @@ void V_Init2()
|
||||||
I_InitGraphics();
|
I_InitGraphics();
|
||||||
I_ClosestResolution (&width, &height, 8);
|
I_ClosestResolution (&width, &height, 8);
|
||||||
|
|
||||||
if (!V_SetResolution (width, height, 8))
|
if (!Video->SetResolution (width, height, 8))
|
||||||
I_FatalError ("Could not set resolution to %d x %d x %d", width, height, 8);
|
I_FatalError ("Could not set resolution to %d x %d x %d", width, height, 8);
|
||||||
else
|
else
|
||||||
Printf ("Resolution: %d x %d\n", SCREENWIDTH, SCREENHEIGHT);
|
Printf ("Resolution: %d x %d\n", SCREENWIDTH, SCREENHEIGHT);
|
||||||
|
|
|
@ -336,6 +336,9 @@ public:
|
||||||
// Set the rect defining the area effected by blending.
|
// Set the rect defining the area effected by blending.
|
||||||
virtual void SetBlendingRect (int x1, int y1, int x2, int y2);
|
virtual void SetBlendingRect (int x1, int y1, int x2, int y2);
|
||||||
|
|
||||||
|
// render 3D view
|
||||||
|
virtual void RenderView(player_t *player);
|
||||||
|
|
||||||
bool Accel2D; // If true, 2D drawing can be accelerated.
|
bool Accel2D; // If true, 2D drawing can be accelerated.
|
||||||
|
|
||||||
// Begin 2D drawing operations. This is like Update, but it doesn't end
|
// Begin 2D drawing operations. This is like Update, but it doesn't end
|
||||||
|
@ -422,8 +425,6 @@ FString V_GetColorStringByName (const char *name);
|
||||||
// Tries to get color by name, then by string
|
// Tries to get color by name, then by string
|
||||||
int V_GetColor (const DWORD *palette, const char *str);
|
int V_GetColor (const DWORD *palette, const char *str);
|
||||||
|
|
||||||
bool V_SetResolution (int width, int height, int bpp);
|
|
||||||
|
|
||||||
#ifdef USEASM
|
#ifdef USEASM
|
||||||
extern "C" void ASM_PatchPitch (void);
|
extern "C" void ASM_PatchPitch (void);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -49,6 +49,9 @@ class IVideo
|
||||||
|
|
||||||
virtual void StartModeIterator (int bits, bool fs) = 0;
|
virtual void StartModeIterator (int bits, bool fs) = 0;
|
||||||
virtual bool NextMode (int *width, int *height, bool *letterbox) = 0;
|
virtual bool NextMode (int *width, int *height, bool *letterbox) = 0;
|
||||||
|
|
||||||
|
virtual bool SetResolution (int width, int height, int bits);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void I_InitGraphics ();
|
void I_InitGraphics ();
|
||||||
|
|
Loading…
Reference in a new issue