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

Sebastian92

Frischling

  • »Sebastian92« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Wesel

Beruf: Azubi (Fachinformatiker für Anwendungsentwicklung)

  • Private Nachricht senden

1

09.10.2007, 19:25

Problem bei Texturen in 2D (Identitätsmatrix)

Hallo.
Ich habe ein Problem mit Texturen in 2D.

Ich habe die World-,Projektion-, und die Viewmatrix auf eine Identitätsmatrix gestellt ( D3DXMatrixIdentity() ).
Dann hab eich per Hand ein Dreieck erstellt und es mit einer Textur gerendert.

Meine Textur:

(Link)


Jetzt mein 1. Problem:
Die Texture ist immer Verzogen.
So sieht es aus wenn ich keine Textur Koordinaten zu weise:

(Link)


Wenn ich der unteren linken Ecke die Koordinate (0|0) und der unteren rechten Ecke(10|0) zuwweise bekomme ich das gleiche Ergebniss. Dabei sollte sich die Textur doch nun 10 mal Kacheln.
Zitat aus 3D-Spieleprogrammierung (3. Auflage) von David Scherfgen Kapitel 2.6.9 :

Zitat

[...] genau wie eine Textur, wenn der linke Vertex eines Dreiecks zum Beispiel die Texturkoordinaten (0,0) und der rechte (10,0) hat - die Textur wird dann genau zehn Mal gekachelt.


Was direkt mein 2. Problem wer das ich die Texture nicht gekachelt bekomm.

Ich denke das ist nur ein Verständnis Fehler von mir, wer aber Trotzdem nett wenn es mir jemand erklären könnte.[/img]

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

09.10.2007, 19:44

Am einfachsten können wir dir helfen, wenn du uns den Quellcode zeigst. Vorallem die FVF und die Dreieckdaten.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Sebastian92

Frischling

  • »Sebastian92« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Wesel

Beruf: Azubi (Fachinformatiker für Anwendungsentwicklung)

  • Private Nachricht senden

3

09.10.2007, 19:52

FVF:

Quellcode

1
D3DDevice->SetFVF(D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1);


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//Vertex
struct SVertex
{
    D3DXVECTOR3 Position;
    DWORD       Color;
    D3DXVECTOR2 Texture;
};

SVertex Dreieck[3];

void Load()
{
     D3DXMATRIX matWorld;
     D3DXMatrixIdentity(&matWorld);
     Device->SetTransform( D3DTS_WORLD, &matWorld );
     Device->SetTransform(D3DTS_PROJECTION,&matWorld);
     Device->SetTransform(D3DTS_VIEW,&matWorld);

     Dreieck[0].Position.x = -1;
     Dreieck[0].Position.y = -1;
     Dreieck[0].Position.z = 0.1f;
     Dreieck[0].Color      = RGB(255,255,255);
     Dreieck[0].Texture.x  = 0;
     Dreieck[0].Texture.y  = 0;

     Dreieck[1].Position.x = 0;
     Dreieck[1].Position.y = 1;
     Dreieck[1].Position.z = 0.1f;
     Dreieck[1].Color      = RGB(255,255,255);

     Dreieck[2].Position.x = 1;
     Dreieck[2].Position.y = -1;
     Dreieck[2].Position.z = 0.1f;
     Dreieck[2].Color      = RGB(255,255,255);
     Dreieck[2].Texture.x  = 10;
     Dreieck[2].Texture.y  = 0;

     if(FAILED(D3DXCreateTextureFromFileEx(Device,
                                 "texture.bmp",
                                 D3DX_DEFAULT,
                                 D3DX_DEFAULT,
                                 D3DX_DEFAULT,
                                 0,
                                 D3DFMT_UNKNOWN,
                                 D3DPOOL_MANAGED,
                                 D3DX_FILTER_NONE,
                                 D3DX_DEFAULT,
                                 0,
                                 NULL,
                                 NULL,
                                 &Texture)))
     {
         PostQuitMessage(-1);
     }

}
void Render()
{
    Device->Clear(0,NULL,D3DCLEAR_STENCIL|D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER,RGB(70,80,90),1,0);
    Device->BeginScene();
    Device->SetTexture(0,Texture);
    Device->DrawPrimitiveUP(D3DPT_TRIANGLELIST,
                            1,
                            Dreieck,
                            sizeof(SVertex));
    Device->EndScene();
}


Habe auch schon mit den Texturkoordinaten rumgespielt hat nichts gebracht. :(

Sebastian92

Frischling

  • »Sebastian92« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Wesel

Beruf: Azubi (Fachinformatiker für Anwendungsentwicklung)

  • Private Nachricht senden

4

09.10.2007, 20:01

Habe jetz noch was zu Texturen gefunden. Die obere linke Ecke ist 0,0 die untere rechte 1,1. habe meine Koordinaten dementsprechend angepasst bekomme aber das gleiche Ergebnis.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dreieck[0].Position.x = -1;
     Dreieck[0].Position.y = -1;
     Dreieck[0].Position.z = 0.1f;
     Dreieck[0].Color      = RGB(255,255,255);
     Dreieck[0].Texture.x  = 0;
     Dreieck[0].Texture.y  = 1;

     Dreieck[1].Position.x = 0;
     Dreieck[1].Position.y = 1;
     Dreieck[1].Position.z = 0.1f;
     Dreieck[1].Color      = RGB(255,255,255);
     Dreieck[1].Texture.x  = 0.5f;
     Dreieck[1].Texture.y  = 0;

     Dreieck[2].Position.x = 1;
     Dreieck[2].Position.y = -1;
     Dreieck[2].Position.z = 0.1f;
     Dreieck[2].Color      = RGB(255,255,255);
     Dreieck[2].Texture.x  = 1;
     Dreieck[2].Texture.y  = 1;

Dofter

Treue Seele

Beiträge: 159

Wohnort: im wunderbaren EBERMANNSTADT

Beruf: Schüler^^

  • Private Nachricht senden

5

09.10.2007, 20:42

ich denke es sollte zumindest schonmal so heißen :

C-/C++-Quelltext

1
D3DDevice->SetFVF(D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1);


Da steht ja eine Farbe, als zwite angabe in SVertex;
"Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und keiner ginge,
um zu sehen, wohin wir kämen, wenn wir gingen"

Sebastian92

Frischling

  • »Sebastian92« ist der Autor dieses Themas

Beiträge: 33

Wohnort: Wesel

Beruf: Azubi (Fachinformatiker für Anwendungsentwicklung)

  • Private Nachricht senden

6

10.10.2007, 05:47

Danke das wars. *g* Jetz funktioniert alles. Die Textur liegt gerade und ich kann sie Kacheln.

Edit:
Wie kann man ein Thema schließen ??

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

7

10.10.2007, 09:49

Das können nur Moderatoren, und das wird hier auch nicht gemacht nur weil das Thema beendet ist, vielleicht will ja später noch jmd anderes dazu eine Frage stellen oder etwas anmerken (bes. letzteres ;) )


Nr. 2000 BOOMSCHAKALAKKA :D

Werbeanzeige