Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 31.03.2005, 17:56 Titel: Texturen funktionieren nicht |
|
|
Hi,
ich muss nochmal nerven^^ Hab schon den ganzen Tag rumprobiert, aber ging irgendwie nicht.
Hab mich entschieden das nun ohne D3DX zu machen und für 2D die XYZRHW Vertices (brauch ich mich nicht mit Matrizen herumzuschlagen) zu benutzen. Nun hab ich ein Quadrat aus einem TriangleFan gemacht und wollte ne Textur drüberlegen. Nun sieht sie aber etwas angeschlagen aus :
Orginal
Ergebnis
Die Textur ist 400x400 groß und wird nicht skaliert. Was kann das sein? _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 31.03.2005, 18:00 Titel: |
|
|
Zeig mal Deine Clear-Methode. Sieht so aus als wenn Du nicht den Tiefenbuffer leerst.
edit: Achja, bitte Zweierpotenz Texturabmessungen benutzen, diverse GraKas haben damit Probleme falls die Maße nicht 2^x betragen. _________________ '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 ]
Zuletzt bearbeitet von Patrick am 31.03.2005, 18:01, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
PeaceKiller JLI Master
Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 31.03.2005, 18:01 Titel: |
|
|
Ich würde mal grundsätzlich eine Potenz von 2 als Höhe/Breite empfehlen.
Und vielleicht stimmt auch das UV-Mapping nicht. _________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Zuletzt bearbeitet von PeaceKiller am 31.03.2005, 20:26, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 31.03.2005, 18:40 Titel: |
|
|
Brauch ich für 2D den Z-Buffer?
Hier mal der Code um zu zeichnen:
CPP: | void DrawAll()
{
lpDevice->BeginScene();
lpDevice->Clear(0,0,D3DCLEAR_TARGET/*|D3DCLEAR_ZBUFFER*/,0xFF000000,0,0);
lpDevice->SetTexture(0,lpTexture);
lpDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);
lpDevice->EndScene();
lpDevice->Present(0,0,0,0);
}
|
Wenn ich jetzt den ZBuffer lösche, wird gar nichts mehr angezeigt
Naja, Texturen und Zweierpotenzen, das geht ja nicht immer ganz, was macht man da? Bei meinem Spiel hatte ich ja auch so "krumme" Werte (halt mit ID3DXSprite) und es ging auch? _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 31.03.2005, 18:46 Titel: |
|
|
Der D3DX Mist skaliert die Texturen falls sie nicht den Freuden der GraKa passen.
ZBuffer muss überall gelöscht werden, Du glaubst doch nicht im ernst das Direct3D 2D kann? Nee das ist alles nur emuliert.
Achja: Lösche nie mit schwarz: 0xFF000000 sonder immer nur mit etwas helleren Farben wie z.B. Blau wenn Du mit licht experimentierst oder licht nicht deaktiviert wurde wirst du sehen warum
Versuch doch mal das Culling zu deaktivieren? Vielleicht renderst du auch falschrum.
edit: wo wird der streamsource gesetzt und das FVF? _________________ '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 |
|
|
JkerryZ JLI Master Trainee
Anmeldedatum: 18.05.2004 Beiträge: 575 Wohnort: Wolfsburg Medaillen: Keine
|
Verfasst am: 31.03.2005, 19:51 Titel: |
|
|
Wenn du Paletten benutzt, ist die Palette kaputt oder kann nicht geöffnet werden.
Dann unbedingt 2er Potenz machen.
Ich habe auch schon die Merkwürdigsten Formen durch falsche Zahlen zurechtgezaubert... |
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 01.04.2005, 14:24 Titel: |
|
|
Zitat: | edit: wo wird der streamsource gesetzt und das FVF? |
Beim Initialisieren. _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 01.04.2005, 14:31 Titel: |
|
|
OLiver hat Folgendes geschrieben: | Zitat: | edit: wo wird der streamsource gesetzt und das FVF? |
Beim Initialisieren. |
Das macht man beim rendern _________________ '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 |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 01.04.2005, 14:40 Titel: |
|
|
Zitat: |
Achja: Lösche nie mit schwarz: 0xFF000000 sonder immer nur mit etwas helleren Farben wie z.B. Blau wenn Du mit licht experimentierst oder licht nicht deaktiviert wurde wirst du sehen warum
|
Licht habe ich ausgeschaltet. Was soll ich in 2D mit Licht anfangen? Vorher hatte ich es auch mit Blau (0xFF0000FF) gelöscht, kam aber ungefähr dasselbe raus.
Zitat: |
Der D3DX Mist skaliert die Texturen falls sie nicht den Freuden der GraKa passen.
|
Hat aber sonst ganz gut funktioniert :p Aber angenommen mein Spieler soll 30x100 Pixel groß sein, da kann ich das nicht einfach mal so auf 32*128 aufrunden. Wie geht man da dann ran? Oder soll ich dann den Rest mit komplett durchsitiger Farbe auffüllen? Wäre ja auch ne Lösung...
Zitat: |
Wenn du Paletten benutzt, ist die Palette kaputt oder kann nicht geöffnet werden.
|
Ne, Paletten benutze ich nicht.
Ich werde heute mal noch ein bisschen rumprobieren, hatte bloß noch keine Zeit --> "Shoppingtag"
Zitat: |
Das macht man beim rendern
|
Wieso denn das? Wird das immer wieder gelöscht? _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 01.04.2005, 14:46 Titel: |
|
|
Zu den Potenzen: Ja einfach rest für anderes benutzen z.B. für kleinere Animationen. Wo steht geschrieben das in 1 Textur nur 1 Objekt rein muss?
Zum StreamSource: Kommt auf den Treiber an. _________________ '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 |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 01.04.2005, 15:02 Titel: |
|
|
So, die Grafik ist jetzt 256x256 groß, Cullmode ist abgeschaltet, Hintergrund ist blau, geht immer noch nicht:
Code für die DrawMethode:
CPP: | void DrawAll()
{
lpDevice->SetFVF(D3DFVF_VERTEX);
lpDevice->SetStreamSource(0,lpVB,0,sizeof(D3DVERTEX));
lpDevice->SetRenderState(D3DRS_ZENABLE,1);
lpDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);
lpDevice->BeginScene();
lpDevice->Clear(0,0,D3DCLEAR_TARGET,0xFF0000FF,0,0);
lpDevice->SetTexture(0,lpTexture);
lpDevice->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);
lpDevice->EndScene();
lpDevice->Present(0,0,0,0);
}
|
Und wie gesagt, wenn ich den ZBuffer lösche, wird gar nichts mehr angezeigt
Zitat: |
Wo steht geschrieben das in 1 Textur nur 1 Objekt rein muss?
|
Und wie kann ich nur bestimmte Teil der Textur rendern? Mit den Texturkoordinaten? Das wird aber dann ziemlich ungenau. _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
KI JLI Master
Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 01.04.2005, 15:10 Titel: |
|
|
mach mal den ZBuffer aus. Du brauchst ihn ja garnicht.
CPP: | lpDevice->SetRenderState(D3DRS_ZENABLE,0);
|
Oder noch besser.
Bei der Initialisierung vom D3D-Device brauchst du erst gar keinen ZBuffer zu erstellen. |
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 01.04.2005, 15:26 Titel: |
|
|
Zitat: |
Oder noch besser.
Bei der Initialisierung vom D3D-Device brauchst du erst gar keinen ZBuffer zu erstellen.
|
Ja, jetzt geht es!
Zitat: |
Texturkoordianten ungenau? Was meinste was man damit alles für schweinereien anfangen kann? eben weil sie so genau sind?
|
Also mit Gleitkommazahlen habe ich schon schlechte Erfahrungen gemacht, besonders wenn es um jeden einzelnen Pixel geht. Dann wird ganz schnell mal 2.0 aus ungeklärten Gründen zu 1.999999999999999999999999 und die Figur schwebt einen Pixel über den Boden _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 01.04.2005, 16:57 Titel: |
|
|
Wie kann man eigentlich Alphablending bei den Texturen realisieren, also wie beim D3DXSprite die modualteColor? _________________ http://www.sieder25.org/ (Siedler 2 - Remake) |
|
Nach oben |
|
|
|