add anti-aliasing flag

This commit is contained in:
cxgeorge 2001-06-12 03:17:49 +00:00
parent cdcf5913f1
commit 4770614973
2 changed files with 35 additions and 2 deletions

View File

@ -20,6 +20,7 @@
#pragma hdrstop
//#define DISABLE_DECALING
#define DISABLE_POLYGON_OFFSET_DECALING
// currently doesnt work well enough in toontown models for us to use
// prob is when viewer gets close to decals, they disappear into wall poly, need to investigate
@ -422,6 +423,15 @@ init_dx( LPDIRECTDRAW7 context,
#endif
_d3dDevice->SetRenderState(D3DRENDERSTATE_SHADEMODE, _CurShadeMode);
if(dx_full_screen_antialiasing) {
if(_D3DDevDesc.dpcTriCaps.dwRasterCaps & D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT) {
_d3dDevice->SetRenderState(D3DRENDERSTATE_ANTIALIAS,D3DANTIALIAS_SORTINDEPENDENT);
dxgsg_cat.debug() << "enabling full-screen anti-aliasing\n";
} else {
dxgsg_cat.debug() << "device doesnt support full-screen anti-aliasing\n";
}
}
}
////////////////////////////////////////////////////////////////////
@ -4882,6 +4892,8 @@ begin_decal(GeomNode *base_geom) {
_d3dDevice->SetRenderState(D3DRENDERSTATE_ZBIAS, POLYGON_OFFSET_MULTIPLIER * _decal_level); // _decal_level better not be higher than 8!
} else
#endif
#ifndef DISABLE_DECALING
{
if (_decal_level > 1)
base_geom->draw(this); // If we're already decaling, just draw the geometry.
@ -4897,6 +4909,9 @@ begin_decal(GeomNode *base_geom) {
// buffer write off during this.
}
}
#else
base_geom->draw(this);
#endif
}
////////////////////////////////////////////////////////////////////
@ -4908,9 +4923,13 @@ begin_decal(GeomNode *base_geom) {
////////////////////////////////////////////////////////////////////
void DXGraphicsStateGuardian::
end_decal(GeomNode *base_geom) {
nassertv(base_geom != (GeomNode *)NULL);
_decal_level--;
#ifdef DISABLE_DECALING
return;
#endif
nassertv(base_geom != (GeomNode *)NULL);
// nassertv(_decal_level >= 1);
#ifndef DISABLE_POLYGON_OFFSET_DECALING

View File

@ -28,6 +28,8 @@ TypeHandle wdxGraphicsWindow::_type_handle;
// need to replace this with global hwnd->wdx classptr STL map obj
wdxGraphicsWindow* global_dxwin = NULL;
extern bool dx_full_screen_antialiasing;
#define MOUSE_ENTERED 0
#define MOUSE_EXITED 1
@ -952,6 +954,12 @@ dx_setup() {
DDSCAPS_FLIP | DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;
if(dx_full_screen_antialiasing) {
// cant check that d3ddevice has this capability yet, so got to set it anyway.
// hope this is OK.
ddsd.ddsCaps.dwCaps2 |= DDSCAPS2_HINTANTIALIASING;
}
PRINTVIDMEM(pDD,&ddsd.ddsCaps,"initial primary & backbuf");
// Create the primary surface
@ -1087,6 +1095,12 @@ dx_setup() {
SurfaceDesc.dwWidth = dwRenderWidth;
SurfaceDesc.dwHeight = dwRenderHeight;
if(dx_full_screen_antialiasing) {
// cant check that d3ddevice has this capability yet, so got to set it anyway.
// hope this is OK.
SurfaceDesc.ddsCaps.dwCaps2 |= DDSCAPS2_HINTANTIALIASING;
}
PRINTVIDMEM(pDD,&SurfaceDesc.ddsCaps,"initial backbuf");
// Create the backbuffer. (might want to handle failure due to running out of video memory.