JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=3c854ff5767024b8871bc809da697c79Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Pixelfehler bei D3D 2D Srites

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
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

BeitragVerfasst am: 21.11.2005, 19:18    Titel: Pixelfehler bei D3D 2D Srites Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dragon
Super JLI'ler


Alter: 38
Anmeldedatum: 24.05.2004
Beiträge: 340
Wohnort: Sachsen
Medaillen: Keine

BeitragVerfasst am: 21.11.2005, 19:30    Titel: Antworten mit Zitat

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. Wink
_________________
Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 21.11.2005, 19:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 21.11.2005, 23:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 22.11.2005, 08:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 23.11.2005, 19:10    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 23.11.2005, 20:25    Titel: Antworten mit Zitat

Das Problem hier ist bekannt und wurde auch des öfteren in diesem Forum angesprochen (von mir Smile ).
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum