- Fixed: D3DFB::Reset() also needs to restore the texture border color,

otherwise it gets reset to black and unused. 
- Fixed: I_SetWndProc() needs to be called before any of the DirectX
  interfaces are initialized, because DirectX subclasses the window itself,
  and I_SetWndProc() undoes that subclassing.


SVN r419 (trunk)
This commit is contained in:
Randy Heit 2006-12-20 02:20:59 +00:00
parent 43ddce519c
commit c8d07f3883
4 changed files with 17 additions and 4 deletions

View file

@ -1,3 +1,10 @@
December 19, 2006
- Fixed: D3DFB::Reset() also needs to restore the texture border color,
otherwise it gets reset to black and unused.
- Fixed: I_SetWndProc() needs to be called before any of the DirectX
interfaces are initialized, because DirectX subclasses the window itself,
and I_SetWndProc() undoes that subclassing.
December 19, 2006 (Changes by Graf Zahl) December 19, 2006 (Changes by Graf Zahl)
- Fixed: Inventory.Icon printed error message for all the missing icons in - Fixed: Inventory.Icon printed error message for all the missing icons in
Strife's teaser. Strife's teaser.

View file

@ -277,7 +277,6 @@ void D3DFB::FillPresentParameters (D3DPRESENT_PARAMETERS *pp, bool fullscreen, b
bool D3DFB::CreateResources () bool D3DFB::CreateResources ()
{ {
I_SetWndProc();
if (!Windowed) if (!Windowed)
{ {
// Remove the window border in fullscreen mode // Remove the window border in fullscreen mode
@ -373,6 +372,14 @@ bool D3DFB::Reset ()
{ {
return false; return false;
} }
if (OffByOneAt < 256)
{
D3DDevice->SetSamplerState (1, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER);
D3DDevice->SetSamplerState (1, D3DSAMP_BORDERCOLOR,
D3DCOLOR_XRGB(GammaTable[SourcePalette[255].r],
GammaTable[SourcePalette[255].g],
GammaTable[SourcePalette[255].b]));
}
return true; return true;
} }
@ -383,7 +390,7 @@ bool D3DFB::Reset ()
// Since NVidia hardware has an off-by-one error in the pixel shader. // Since NVidia hardware has an off-by-one error in the pixel shader.
// On a Geforce 7950GT and a 6200, I have witnessed it skip palette entry // On a Geforce 7950GT and a 6200, I have witnessed it skip palette entry
// 240. I have a report that an FX card skips in a totally different spot. // 240. I have a report that an FX card skips in a totally different spot.
// So rather than try and detect it in the shader, we do it here and // So rather than try and correct it in the shader, we detect it here and
// compensate when uploading the palette and when drawing by setting the // compensate when uploading the palette and when drawing by setting the
// sampler mode for the palette to border and making the border color the // sampler mode for the palette to border and making the border color the
// final color in the palette. // final color in the palette.

View file

@ -230,8 +230,6 @@ bool DDrawFB::CreateResources ()
BufferCount = 1; BufferCount = 1;
I_SetWndProc();
if (!Windowed) if (!Windowed)
{ {
// Remove the window border in fullscreen mode // Remove the window border in fullscreen mode

View file

@ -110,6 +110,7 @@ Win32Video::Win32Video (int parm)
: m_Modes (NULL), : m_Modes (NULL),
m_IsFullscreen (false) m_IsFullscreen (false)
{ {
I_SetWndProc();
if (!InitD3D9()) if (!InitD3D9())
{ {
InitDDraw(); InitDDraw();