Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

27.03.2013, 12:56

Schau einfach nochmal auf die Texturkoordinaten... 8|

MfG
Check

12

27.03.2013, 13:04

Hmmm. Meiner Meinung nach, müsste das doch richtig sein, oder? :whistling:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
 g_Triangle[0].pos = tbVector3(0.0f,1.0f,0.0f); // Oben (Mitte)
    g_Triangle[0].col = tbColor(1.0f,1.0f,1.0f);
    g_Triangle[0].uv = tbVector2 (0.5f,0.0f);

    g_Triangle[1].pos = tbVector3(1.0f,-1.0f,0.0f); //Rechts unten
    g_Triangle[1].col = tbColor(1.0f,1.0f,1.0f);
    g_Triangle[1].uv = tbVector2 (1.0f,1.0f);

    g_Triangle[2].pos = tbVector3(-1.0f,-1.0f,0.0f); //Links unten
    g_Triangle[2].col = tbColor(1.0f,1.0f,1.0f);
    g_Triangle[2].uv = tbVector2 (0.0f,1.0f);

13

27.03.2013, 13:32

Hab jetzt ein bisschen rumgespielt:

C-/C++-Quelltext

1
2
3
 g_Triangle[0].uv = tbVector2 (0.338f,0.0f);
    g_Triangle[1].uv = tbVector2 (0.75f,1.0f);
    g_Triangle[2].uv = tbVector2 (-0.173f,1.0f);


(Link)

Aber das macht doch keinen Sinn...
Z.b.: Müsst doch die v-Koordiante 1.0f ganz unten sein, was sie ja nicht ist... 8|

14

27.03.2013, 13:33

Nein, ich bin mir ziemlich sicher, dass die Textur nur von 0 bis 1 geht. Für alles was außerhalb dieser Koordinaten gibt, gibt es Flags, man kann z.b. einstellen, dass die Textur wiederholt wird. Bei dir sieht es so aus, als sei genau das nicht der Fall, also wird alles zwischen 0 und -1 einfach schwarz. Also entweder korrekte Texturkoordinaten oder das Wiederholen von Texturen aktivieren.
Lieber dumm fragen, als dumm bleiben!

15

27.03.2013, 13:39

Ok, habe das Wiederholen mit

C-/C++-Quelltext

1
2
g_D3DDevice->SetSamplerState (0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP);
    g_D3DDevice->SetSamplerState (0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP);

aktiviert. (Ich hoffe das macht man so.... ?( )

Das Ergebnis sieht aus wie vorher. (Nicht wie oben ;))

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

27.03.2013, 13:50

Deine Bilddatei hat vermutlich Abmessungen, die keine Zweierpotenzen sind und du lädst die Textur vermutlich mit D3DXCreateTextureFromFile(Ex)!? Wenn du es nicht extra abschaltest, dann packt diese Funktion das Bild in eine Textur mit den nächst größeren Zweierpotenzen als Abmessungen und füllt den Rest mit Schwarz auf...

17

27.03.2013, 14:39

Super! Klappt jetzt ^^
Aber wie kann ich die Textur laden, ohne 2er Protenz? (Anscheinend ist es ja möglich...)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

27.03.2013, 14:42

Dazu solltest du zuerst mal klären, ob deine Grafikkarte überhaupt Texturen mit Abmessungen, die keine Zweierpotenzen sind ("non power of two textures"), unterstützt, was bei D3D9 Hardware nicht unbedingt und auch dann evtl. nur unter gewissen Umständen der Fall ist. Falls ja, übergibst du bei D3DXCreateTextureFromFileEx() als Width und Height D3DX_DEFAULT_NONPOW2.

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

19

27.03.2013, 14:53

Aber wie kann ich die Textur laden, ohne 2er Protenz? (Anscheinend ist es ja möglich...)
Kleiner Tipp: lass es besser.

Nimm ein Programm deiner Wahl uns speichere die Textur in passender Groesse.

20

27.03.2013, 15:10

Kenne mich zwar nicht mit Drect3D aus, aber ein wenig mit OpenGL.
Das Textur-(UV)-Koordinatensystem sind bei beiden gleich soviel ich weiß

Demnach ist die UV Links-Oben = 0,1 und Recht-Unten 1,0


(Link)

Werbeanzeige