Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 21.11.2005, 19:18 Titel: Pixelfehler bei D3D 2D Srites |
|
|
Also, ich hab eine D3DSprite Klasse gemacht, nur leider scheint es da Pixelfehler zu geben. Ich habe den Eckpunkten die Koordinaten 0 und 1 gegeben, und Scaliere das Sprite dann um seine Größe. Nur leider scheinen die Sprites nicht genau wiedergegeben zu werden, und je nachdem wo sie erscheinen, auch schonmal um n Pixel verschoben, was sehr merkwürdig aussieht, wenn die beim scrollen so springen. Ich hab mal versucht das ganze so abzuändern:
CPP: | m_Vertices[3].x=1.01f;
m_Vertices[3].y=1.01f;
m_Vertices[3].z=0.5;
m_Vertices[3].u=1;
m_Vertices[3].v=1;
|
Dann hab ich noch einen MagFilter:
CPP: | m_lpDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
|
Manchmal möchte ich Sprites aber auch skalieren, dafür brauch ich den dann. Wenn ich das wie oben mache, mit dem bisschen größer, sieht es ohne den Filter korrekt aus, mitdem Filter aber verwischen sie, was an den rändern von Tiles Ränder erzeugt.
Kann es sein, das D3D auf jeden Fall einen Filter benutzt? Ich müsste quasi schaffen das Sprites in originalgröße nicht gefiltert werden, und das so Pixelsprünge beim rendern verschwinden.
CPP: | m_lpDevice->SetTransform(D3DTS_WORLD, &cMatrix(MatrixScalation(static_cast<float>(m_XSize*m_XScale), static_cast<float>(m_YSize*m_YScale))*MatrixTranslation(XPos, YPos)).D3DMatrix);//Identittsmatrix
|
m_Scale ist per Standard 1.0f; _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Dragon Super JLI'ler

Alter: 38 Anmeldedatum: 24.05.2004 Beiträge: 340 Wohnort: Sachsen Medaillen: Keine
|
Verfasst am: 21.11.2005, 19:30 Titel: |
|
|
das ist normal, ich hab das bei opengl auch. Das liegt daran dass du deine Koordinaten mit kommastellen angiebst und dein Bildschirm keine halben Pixel anzeigen kann.  _________________ Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 21.11.2005, 19:31 Titel: |
|
|
Paar Fragen:
1. Womit lädst Du die Textur? D3DX? Finger weg, der knallt Dir Gnadenlos einen ekelhaften Filter direkt in die Textur rein und den mit anderen Filtern rauszuhauen ist richtig kompliziert.
2. Finger weg von Filtern, die Braucht mach nicht für 2D zu setzen.
3. In der Doku gibt es einen Artikel "Texel to pixel" sehr hilfreich
4. Ist die Textur eine Zweierpotenz? Wenn nein: Mach eine. Texturen != Surfaces. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 21.11.2005, 23:40 Titel: |
|
|
man braucht Filter für 2D, wenn man Bilder vergrößern wills iehts sonst kacke aus. Ich lade die Texturen selber, daher keine Filter beim laden. Zweierpotenzen eher nein, aber alles Vielfaches von 4. Zweierpotenzen kann man in 2D net so gut benutzen, wenn ein Sprite dann ein Pixel zu groß ist, muss die Textur doppelt so groß sein, das ist ja übelst unpraktikabel.
Texel to Pixel Link? Kernaussagen? Konkrete Lösungsidee? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 22.11.2005, 08:11 Titel: |
|
|
Jonathan_Klein
Natürlich sehen die Bilder scheiße aus wenn Du die vergrößern willst. Ist doch normal!
Wegen Texel To Pixel: Such in der Doku.
Wegen korrektem Darstellen: Such mal im Forum nach meinen Direct3D Source Tutorials, die waren ja größtenteils alle 2D _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 23.11.2005, 19:10 Titel: |
|
|
funktioneit net. Ich hab das wie im Artikel beschrieben jeder Position 0.5 abgezogen. Dann hab ich noch die Größe um 1 verringert, weil ich dachte, wenn das von 0 bis z.B. 96 geht ist das falsch da es von 0 bis 95 gehen muss. Hat aber beides in keine Kombination funktioniert. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 23.11.2005, 20:25 Titel: |
|
|
Das Problem hier ist bekannt und wurde auch des öfteren in diesem Forum angesprochen (von mir ).
Wie Ptarick schon gesagt hat, steht alles was du wissen musst in diesem Texel~Pixel Artikel.
Guck mal hier: Beitrag zu Grundlagen Tutorials |
|
Nach oben |
|
 |
|