![]() |
Strich im transparenten Texture
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo zusammen,
bin gerade dabei an mein MediaCenter-Programm weiter zu tüfteln.... Nun kämpf ich gerade an folgendem Problem (siehe Ausschnitt Screen-Shot) das nach dem Rendern (DirectX9Ex) beim Fenster auf der Oberseite ein Strich ist. Die Texture selbst wird über Direct2D auf eine SharedSurface gezeichnet, ist aber in Ordnung (Texture als PNG abgespeichert, siehe Anhang). Ob ich die Texture mit einer Ortho oder einer Perspektive rendere (also auf den Vertex unter D3D9Ex) bleibt egal, immer das selbe Ergebnis. Hat jemand eine Idee oder Anhaltspunkt für mich was da schief geht ? :gruebel: bg |
AW: Strich im transparenten Texture
Ich weiß von OpenGL, dass das evt. durchs Wrapping verursacht werden kann!
Hast du soetwas wie ~WRAP_S, WRAP_T aktiviert (Texturkoordinaten) |
AW: Strich im transparenten Texture
Hi Aphton,
der Tip war gut, danke
Delphi-Quellcode:
Scheinbar kommt es hier zu einem Problem mit der Texture und der Koordinatenumrechnung.
D3D9DeviceEx.SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
D3D9DeviceEx.SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); Ich hab mir auch das erzeugte PNG nochmals näher angeschaut: Bei der Direct2D muss die Y Koordinate um -1 gerechnet werden (bei X aber nicht). Dh. ein Rechteck muss zb. von Y 9 nach 49 gezeichnet werden um am Bitmap dann von 10 nach 50 zu gehen. wie gesagt, bei X tritt dieser offset nicht auf, klingt komisch ist halt so :gruebel: wird die texture mit 1 pixel transparenten rand gezeichnet braucht das Adress-Clamping auch nicht eingeschalten werden, die Texture wird dann richtig gerendert (screenshot, mit GIMP geprüft :wink:) D2 Content selbst hab ich noch nicht geprüft, da anscheinend ein bisschen aufwendig ![]() Damit werde ich hergehen und die Texture einfach intern in der GUIWindow-Basis-Klasse um 2 pixel vergrößern und einen transparenten Rand lassen. und die Texture-Größe ist mir ja rechentechnisch wurscht, weil das Zeichnen ja eh die GPU machen muss :-D bg |
AW: Strich im transparenten Texture
Hallo zusammen und ein gutes neues Jahr!
Nach ein wenig MSDN Recherche hab ich nun Licht in die Sache gebracht. Ursächlich für diese Verhalten ist das Texture-Filtering. Da die Ränder meiner Direct2D Surface am PNG klar sind, am Screenshot allerdings mit Antialiasing Effekt, hab ich mal folgendes probiert:
Delphi-Quellcode:
Siehe da, die Texture ist klar, und die Ränder am Rand sind auch weg, auch wenn man bis an den Rand zeichnet.
D3D9DeviceEx.SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_NONE);
D3D9DeviceEx.SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_NONE); Vielleicht nützt ja mal jemand anderen :) bg |
AW: Strich im transparenten Texture
Sollte der Min und Mag Filter nicht eigentlich nur dann angewendet werden, wenn die Textur verkleinert oder vergrößert wird?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz