alpha kanal texture hat weißen Rand
-
Hi
haben eine Texture mit einem alpha Kanal. Es funktioniert, die Schneeflocken sind da Transparent wo es sein soll, leider hat die Textur in der Darstellung einen weißen Rand(also nur in der Renderdarstellung, so im Photoshop nicht) .
Weiß einer woran es liegt oder hatte schon mal ein ähnliches Problem.Ich habe ein Schnee Partikelsystem und habe folgende Render Methode:
void CPartikelsystem::Render() { mein_directx->device->SetRenderState(D3DRS_LIGHTING, false); mein_directx->device->SetRenderState(D3DRS_ALPHABLENDENABLE, true); mein_directx->device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE); mein_directx->device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE); mein_directx->device->SetRenderState( D3DRS_POINTSPRITEENABLE, TRUE); mein_directx->device->SetRenderState( D3DRS_POINTSCALEENABLE, TRUE); mein_directx->device->SetRenderState( D3DRS_POINTSIZE, FtoDW(0.08f)); mein_directx->device->SetRenderState( D3DRS_POINTSIZE_MIN, FtoDW(0.00f)); mein_directx->device->SetRenderState( D3DRS_POINTSCALE_A, FtoDW(0.00f)); mein_directx->device->SetRenderState( D3DRS_POINTSCALE_B, FtoDW(0.00f)); mein_directx->device->SetRenderState( D3DRS_POINTSCALE_C, FtoDW(1.00f)); mein_directx->device->SetRenderState( D3DRS_POINTSIZE, FtoDW(m_fParticleSize) ); mein_directx->device->SetStreamSource( 0, m_pVB, sizeof (POINTVERTEX) ); mein_directx->device->SetVertexShader( D3DFVF_XYZ|D3DFVF_DIFFUSE ); m_pVB->Lock(0 ,m_iNumParticles * sizeof (POINTVERTEX),(BYTE **) &m_Verts,0); m_pVB->Unlock(); mein_directx->device->SetTransform(D3DTS_WORLD, &m_matWelt); mein_directx->device->SetTexture( 0, pointtexture); mein_directx->device->DrawPrimitive( D3DPT_POINTLIST, 0, m_iNumParticles ); mein_directx->device->SetRenderState( D3DRS_POINTSPRITEENABLE, false); mein_directx->device->SetRenderState( D3DRS_POINTSCALEENABLE, false); mein_directx->device->SetRenderState(D3DRS_ALPHABLENDENABLE, false); mein_directx->device->SetRenderState(D3DRS_LIGHTING, true); };
Ich benutze eine *.png datei.
Gruß Soulfly
-
-
ist 8 kB groß
Wenn sich die einer anschauen will ist auf
www.darkearth.de/schneeflocke.png(Das graue ist normalerweise transparent)
Gruß Soulfly
-
Das macht in Pixeln?
Bye, TGGC \-/
-
Ich hatte das selbe Problem einmal bei einem OpenGL Programm. Damals lag es am Texturfilter. Wenn ich den Filter dort auf "NEAREST" gestellt hab, wurden die Texturen "weicher" gemacht, was dazu führt das am Rand so ein weisser Rest bleibt. Wenn man dann den Filter auf "LINEAR" umgestellt hat, hats funktioniert. Vielleicht gibt es diese Begriffe auch in D3D - Hab da leider keine Ahnung von. Aber kannst ja mal suchen.
Es muss theoretisch aber auch beides gehen - Also NEAREST-Filter UND Alpha Blending. (Bitte um Tipps auch für OpenGL)
-
Sorry - lag doch ein meiner Texture - hatte sich irgendwie ein weißer Rand eingeschlichen - den man so ohne weiteres gar nicht gesehen hat.
Problem behoben. THX für die sonstigen Tips.Gruß Soulfly