mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-29 16:20:11 -04:00
implement draw_polygon
This commit is contained in:
parent
389679a8e7
commit
cce8ca381d
@ -400,7 +400,7 @@ init_dx( LPDIRECTDRAW7 context,
|
|||||||
|
|
||||||
if(((D3DDevDesc.dpcTriCaps.dwSrcBlendCaps & REQUIRED_BLENDCAPS)!=REQUIRED_BLENDCAPS) ||
|
if(((D3DDevDesc.dpcTriCaps.dwSrcBlendCaps & REQUIRED_BLENDCAPS)!=REQUIRED_BLENDCAPS) ||
|
||||||
((D3DDevDesc.dpcTriCaps.dwDestBlendCaps & REQUIRED_BLENDCAPS)!=REQUIRED_BLENDCAPS)) {
|
((D3DDevDesc.dpcTriCaps.dwDestBlendCaps & REQUIRED_BLENDCAPS)!=REQUIRED_BLENDCAPS)) {
|
||||||
dxgsg_cat.error() << "device is missing texture blending capabilities, blending may not work correctly\n";
|
dxgsg_cat.error() << "device is missing alpha blending capabilities, blending may not work correctly\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!(D3DDevDesc.dpcTriCaps.dwTextureCaps & D3DPTEXTURECAPS_TRANSPARENCY)) {
|
if(!(D3DDevDesc.dpcTriCaps.dwTextureCaps & D3DPTEXTURECAPS_TRANSPARENCY)) {
|
||||||
@ -418,6 +418,11 @@ init_dx( LPDIRECTDRAW7 context,
|
|||||||
dxgsg_cat.error() << "device is missing tri-linear mipmap filtering capability, texture mipmaps may not supported!!!\n";
|
dxgsg_cat.error() << "device is missing tri-linear mipmap filtering capability, texture mipmaps may not supported!!!\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define REQUIRED_TEXBLENDCAPS (D3DTEXOPCAPS_MODULATE | D3DTEXOPCAPS_SELECTARG1 | D3DTEXOPCAPS_SELECTARG2)
|
||||||
|
if((D3DDevDesc.dwTextureOpCaps & REQUIRED_TEXBLENDCAPS)!=REQUIRED_TEXBLENDCAPS) {
|
||||||
|
dxgsg_cat.error() << "device is missing some required texture blending capabilities, texture blending may not work properly!!!\n";
|
||||||
|
}
|
||||||
|
|
||||||
SetRect(&clip_rect, 0,0,0,0); // no clip rect set
|
SetRect(&clip_rect, 0,0,0,0); // no clip rect set
|
||||||
|
|
||||||
_d3dDevice->SetRenderState(D3DRENDERSTATE_AMBIENTMATERIALSOURCE, D3DMCS_COLOR1);
|
_d3dDevice->SetRenderState(D3DRENDERSTATE_AMBIENTMATERIALSOURCE, D3DMCS_COLOR1);
|
||||||
@ -980,6 +985,12 @@ draw_line(const GeomLine* geom) {
|
|||||||
dxgsg_cat.debug() << "draw_line()" << endl;
|
dxgsg_cat.debug() << "draw_line()" << endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
if(geom->get_width()!=1.0f) {
|
||||||
|
dxgsg_cat.error() << "DX does not support drawing lines with a non-1.0 pixel width!!\n";
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef WBD_GL_MODE
|
#ifdef WBD_GL_MODE
|
||||||
call_glLineWidth(geom->get_width());
|
call_glLineWidth(geom->get_width());
|
||||||
|
|
||||||
@ -1078,6 +1089,12 @@ draw_linestrip(const GeomLinestrip* geom) {
|
|||||||
dxgsg_cat.debug() << "draw_linestrip()" << endl;
|
dxgsg_cat.debug() << "draw_linestrip()" << endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
if(geom->get_width()!=1.0f) {
|
||||||
|
dxgsg_cat.error() << "DX does not support drawing lines with a non-1.0 pixel width!!\n";
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef WBD_GL_MODE
|
#ifdef WBD_GL_MODE
|
||||||
call_glLineWidth(geom->get_width());
|
call_glLineWidth(geom->get_width());
|
||||||
|
|
||||||
@ -1200,6 +1217,19 @@ draw_polygon(const GeomPolygon *geom) {
|
|||||||
dxgsg_cat.debug() << "draw_polygon()" << endl;
|
dxgsg_cat.debug() << "draw_polygon()" << endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* wireframe polygon will be drawn as multu-tri trifan until I get this casting issue straightened out
|
||||||
|
DWORD rstate;
|
||||||
|
_d3dDevice->GetRenderState(D3DRENDERSTATE_FILLMODE, &rstate);
|
||||||
|
if(rstate!=D3DFILL_WIREFRAME) {
|
||||||
|
draw_multitri(geom, D3DPT_TRIANGLEFAN);
|
||||||
|
} else {
|
||||||
|
Geom *gp=dynamic_cast<Geom *>(geom); doesnt work
|
||||||
|
draw_linestrip(gp);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
// draw_multitri(geom, D3DPT_TRIANGLEFAN);
|
||||||
|
|
||||||
#ifdef WBD_GL_MODE
|
#ifdef WBD_GL_MODE
|
||||||
int nprims = geom->get_num_prims();
|
int nprims = geom->get_num_prims();
|
||||||
const int *plen = geom->get_lengths();
|
const int *plen = geom->get_lengths();
|
||||||
@ -1904,6 +1934,10 @@ void DXGraphicsStateGuardian::
|
|||||||
draw_sphere(const GeomSphere *geom) {
|
draw_sphere(const GeomSphere *geom) {
|
||||||
activate();
|
activate();
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
dxgsg_cat.debug() << "draw_sphere() unimplemented in DX!!\n";
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef GSG_VERBOSE
|
#ifdef GSG_VERBOSE
|
||||||
dxgsg_cat.debug() << "draw_sphere()" << endl;
|
dxgsg_cat.debug() << "draw_sphere()" << endl;
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user