mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
fix texture matrix bleed-over
This commit is contained in:
parent
b222f63f77
commit
03c13618e2
@ -3770,11 +3770,14 @@ void DXGraphicsStateGuardian7::
|
|||||||
issue_tex_matrix(const TexMatrixAttrib *attrib) {
|
issue_tex_matrix(const TexMatrixAttrib *attrib) {
|
||||||
const LMatrix4f &m = attrib->get_mat();
|
const LMatrix4f &m = attrib->get_mat();
|
||||||
|
|
||||||
// This is ugly. Need to make this a simple boolean test instead of
|
if (!attrib->has_stage(TextureStage::get_default())) {
|
||||||
// a matrix compare.
|
|
||||||
if (m == LMatrix4f::ident_mat()) {
|
|
||||||
_pScrn->pD3DDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS,
|
_pScrn->pD3DDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS,
|
||||||
D3DTTFF_DISABLE);
|
D3DTTFF_DISABLE);
|
||||||
|
// For some reason, "disabling" texture coordinate transforms
|
||||||
|
// doesn't seem to be sufficient. We'll load an identity matrix
|
||||||
|
// to underscore the point.
|
||||||
|
_pScrn->pD3DDevice->SetTransform(D3DTRANSFORMSTATE_TEXTURE0, &matIdentity);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// We have to reorder the elements of the matrix for some reason.
|
// We have to reorder the elements of the matrix for some reason.
|
||||||
LMatrix4f dm(m(0, 0), m(0, 1), m(0, 3), 0.0f,
|
LMatrix4f dm(m(0, 0), m(0, 1), m(0, 3), 0.0f,
|
||||||
|
@ -3163,11 +3163,14 @@ void DXGraphicsStateGuardian8::
|
|||||||
issue_tex_matrix(const TexMatrixAttrib *attrib) {
|
issue_tex_matrix(const TexMatrixAttrib *attrib) {
|
||||||
const LMatrix4f &m = attrib->get_mat();
|
const LMatrix4f &m = attrib->get_mat();
|
||||||
|
|
||||||
// This is ugly. Need to make this a simple boolean test instead of
|
if (!attrib->has_stage(TextureStage::get_default())) {
|
||||||
// a matrix compare.
|
|
||||||
if (m == LMatrix4f::ident_mat()) {
|
|
||||||
_pD3DDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS,
|
_pD3DDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS,
|
||||||
D3DTTFF_DISABLE);
|
D3DTTFF_DISABLE);
|
||||||
|
// For some reason, "disabling" texture coordinate transforms
|
||||||
|
// doesn't seem to be sufficient. We'll load an identity matrix
|
||||||
|
// to underscore the point.
|
||||||
|
_pD3DDevice->SetTransform(D3DTS_TEXTURE0, &matIdentity);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// We have to reorder the elements of the matrix for some reason.
|
// We have to reorder the elements of the matrix for some reason.
|
||||||
LMatrix4f dm(m(0, 0), m(0, 1), m(0, 3), 0.0f,
|
LMatrix4f dm(m(0, 0), m(0, 1), m(0, 3), 0.0f,
|
||||||
|
@ -3151,11 +3151,14 @@ void DXGraphicsStateGuardian9::
|
|||||||
issue_tex_matrix(const TexMatrixAttrib *attrib) {
|
issue_tex_matrix(const TexMatrixAttrib *attrib) {
|
||||||
const LMatrix4f &m = attrib->get_mat();
|
const LMatrix4f &m = attrib->get_mat();
|
||||||
|
|
||||||
// This is ugly. Need to make this a simple boolean test instead of
|
if (!attrib->has_stage(TextureStage::get_default())) {
|
||||||
// a matrix compare.
|
|
||||||
if (m == LMatrix4f::ident_mat()) {
|
|
||||||
_pD3DDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS,
|
_pD3DDevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS,
|
||||||
D3DTTFF_DISABLE);
|
D3DTTFF_DISABLE);
|
||||||
|
// For some reason, "disabling" texture coordinate transforms
|
||||||
|
// doesn't seem to be sufficient. We'll load an identity matrix
|
||||||
|
// to underscore the point.
|
||||||
|
_pD3DDevice->SetTransform(D3DTS_TEXTURE0, &matIdentity);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// We have to reorder the elements of the matrix for some reason.
|
// We have to reorder the elements of the matrix for some reason.
|
||||||
LMatrix4f dm(m(0, 0), m(0, 1), m(0, 3), 0.0f,
|
LMatrix4f dm(m(0, 0), m(0, 1), m(0, 3), 0.0f,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user