mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-20 05:54:54 -04:00
try again to fix decal bug
This commit is contained in:
parent
b39d6a059b
commit
7054792a38
@ -4907,10 +4907,6 @@ begin_decal(GeomNode *base_geom) {
|
|||||||
|
|
||||||
#ifndef DISABLE_DECALING
|
#ifndef DISABLE_DECALING
|
||||||
|
|
||||||
// need to save current xform matrix in case it is changed during subrendering, so subsequent decal draws use same xform
|
|
||||||
_bTransformIssued = false;
|
|
||||||
_d3dDevice->GetTransform( D3DTRANSFORMSTATE_WORLD, &_SavedTransform);
|
|
||||||
|
|
||||||
#ifndef DISABLE_POLYGON_OFFSET_DECALING
|
#ifndef DISABLE_POLYGON_OFFSET_DECALING
|
||||||
if (dx_decal_type == GDT_offset) {
|
if (dx_decal_type == GDT_offset) {
|
||||||
#define POLYGON_OFFSET_MULTIPLIER 2
|
#define POLYGON_OFFSET_MULTIPLIER 2
|
||||||
@ -4928,9 +4924,13 @@ begin_decal(GeomNode *base_geom) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
{
|
{
|
||||||
if (_decal_level > 1)
|
if (_decal_level > 1) {
|
||||||
base_geom->draw(this); // If we're already decaling, just draw the geometry.
|
base_geom->draw(this); // If we're already decaling, just draw the geometry.
|
||||||
else {
|
} else {
|
||||||
|
// need to save current xform matrix in case it is changed during subrendering, so subsequent decal draws use same xform
|
||||||
|
_bTransformIssued = false;
|
||||||
|
_d3dDevice->GetTransform( D3DTRANSFORMSTATE_WORLD, &_SavedTransform);
|
||||||
|
|
||||||
// First turn off writing the depth buffer to render the base geometry.
|
// First turn off writing the depth buffer to render the base geometry.
|
||||||
_d3dDevice->GetRenderState(D3DRENDERSTATE_ZWRITEENABLE, (DWORD *)&_depth_write_enabled); //save cur val
|
_d3dDevice->GetRenderState(D3DRENDERSTATE_ZWRITEENABLE, (DWORD *)&_depth_write_enabled); //save cur val
|
||||||
_d3dDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, FALSE);
|
_d3dDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, FALSE);
|
||||||
@ -5001,7 +5001,6 @@ end_decal(GeomNode *base_geom) {
|
|||||||
#endif
|
#endif
|
||||||
// Note: For DX8, use D3DRS_COLORWRITEENABLE (check D3DPMISCCAPS_COLORWRITEENABLE first)
|
// Note: For DX8, use D3DRS_COLORWRITEENABLE (check D3DPMISCCAPS_COLORWRITEENABLE first)
|
||||||
|
|
||||||
|
|
||||||
// No need to have texturing on for this.
|
// No need to have texturing on for this.
|
||||||
enable_texturing(false);
|
enable_texturing(false);
|
||||||
|
|
||||||
@ -5013,21 +5012,6 @@ end_decal(GeomNode *base_geom) {
|
|||||||
|
|
||||||
// Finally, restore the depth write and color mask states to the
|
// Finally, restore the depth write and color mask states to the
|
||||||
// way they're supposed to be.
|
// way they're supposed to be.
|
||||||
/*
|
|
||||||
DepthWriteAttribute *depth_write;
|
|
||||||
if (get_attribute_into(depth_write, _state,
|
|
||||||
DepthWriteTransition::get_class_type()))
|
|
||||||
issue_depth_write(depth_write);
|
|
||||||
|
|
||||||
ColorMaskAttribute *color_mask;
|
|
||||||
if (get_attribute_into(color_mask, _state,
|
|
||||||
ColorMaskTransition::get_class_type())) {
|
|
||||||
issue_color_mask(color_mask);
|
|
||||||
} else {
|
|
||||||
|
|
||||||
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (dx_decal_type == GDT_blend) {
|
if (dx_decal_type == GDT_blend) {
|
||||||
enable_blend(was_blend);
|
enable_blend(was_blend);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user