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

Shark_3D

Treue Seele

  • »Shark_3D« ist der Autor dieses Themas

Beiträge: 311

Wohnort: Hannover

Beruf: Schüler

  • Private Nachricht senden

1

08.05.2003, 15:09

Textur:Ich seh nur schwarz!!!

Also ich hab jetzt ne Textur mit LoadTextureFrimFileEx geladen.
Ich hab der Vertex Struct die texturkoordinaten eingeflöst.Und ich habe die Textur gesetzt. Abe rwenn ich das Ding starte sehe ich nur ein schwarzes Dreieck.keine farben mehr und auch keine Texttur.
Was muss ich noch amchen damit man die Textur sieht
?
"Immer die doppelte Menge"
(Kaufmannsregel Nr.355 von der Lehrkassette 3)

Shark_3D

Treue Seele

  • »Shark_3D« ist der Autor dieses Themas

Beiträge: 311

Wohnort: Hannover

Beruf: Schüler

  • Private Nachricht senden

2

08.05.2003, 15:10

hast sich erledigt.Hab nur vergessen das FVF abzudaten.Juhuu es geht:)
"Immer die doppelte Menge"
(Kaufmannsregel Nr.355 von der Lehrkassette 3)

mortl

Frischling

Beiträge: 18

Wohnort: Straubing/Bayern

Beruf: Schüler

  • Private Nachricht senden

3

08.05.2003, 19:09

Hi,

Ich hab zur Zeit ein ähnliches Problem mit transformierten Vertieces. Wenn ich z. B. die Textur aus dem 3. Kapitel deines Buches verwende sehe ich nur das:

(Link)

Mein Vertexformat:

Quellcode

1
#define D3D_FVFVERTEXFORMAT (D3DFVF_XYZRHW | D3DFVF_TEX1)

und meine Vertexstruktur

Quellcode

1
2
3
4
5
struct SSpriteVertex
{
    float x, y, z, rhw;
    float tu, tv;
};

Ich rendere die Dreiecke mit der Funktion "DrawPrimitiveUP".
Wo liegt der Fehler

Mortl

PS: Dein Buch gefällt mir gut!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

08.05.2003, 19:10

Welche Textur meinst Du denn?
Und setzt Du die Texturkoordinaten auch korrekt?

mortl

Frischling

Beiträge: 18

Wohnort: Straubing/Bayern

Beruf: Schüler

  • Private Nachricht senden

5

08.05.2003, 20:26

Tut mir leid, ich hab da was verwechselt, ich meine die Textur aus dem Beispielprogramm von Kapitel 2.6.

Mit den Texturkoordinaten müsste eigentlich alles stimmen.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

08.05.2003, 20:33

Schick mal den gesamten Code. Sonst ist es nicht möglich, den Fehler zu finden.

7

08.05.2003, 21:20

Hä?
@ David verwendest du keine Klassen? Nur Structs?
ebah rutangiS reniem ni relheF 01 rebü hci ssad, etniem latkraF!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

08.05.2003, 21:23

Hä? Wie kommst Du darauf?
Und was hat das bitteschön mit dem Thema hier zu tun?

mortl

Frischling

Beiträge: 18

Wohnort: Straubing/Bayern

Beruf: Schüler

  • Private Nachricht senden

9

09.05.2003, 16:49

Ich hab ne Klasse mit einer Init und einer Render Funtion
Der Code von der Init Funktion

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
void CSprite::Create(CDirect3D *D3D, LPSTR lpstrTextureFile, float fX, float fY, float fWidth, float fHeight)
{
    Direct3D = D3D;

    SSpriteVertex Vertieces[] =
    {
        {fX       , fY+fHeight, 0.0f, 0, 1},
        {fX       , fY        , 0.0f, 0, 0},
        {fX+fWidth, fY        , 0.0f, 1, 0},
        {fX+fWidth, fY        , 0.0f, 1, 0},
        {fX+fWidth, fY+fHeight, 0.0f, 1, 1},
        {fX       , fY+fHeight, 0.0f, 0, 1}
    };

    for(int i = 0; i < 6; i++)
    {
        SpriteVertieces[i] = Vertieces[i];
    }

        D3DXCreateTextureFromFileEx(Direct3D->GetDevice(), 
                                lpstrTextureFile, 
                                D3DX_DEFAULT, 
                                D3DX_DEFAULT,
                                D3DX_DEFAULT,
                                0,
                                D3DFMT_UNKNOWN,
                                D3DPOOL_MANAGED,                                
                                D3DX_FILTER_NONE,
                                D3DX_DEFAULT,
                                0,
                                NULL,
                                NULL,
                                &lpD3DTexture);
    

    Direct3D->GetDevice()->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
    Direct3D->GetDevice()->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
    Direct3D->GetDevice()->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);
}

und die Render Funktion

Quellcode

1
2
3
4
5
6
7
8
void CSprite::Draw()
{
    Direct3D->GetDevice()->SetFVF(D3D_FVFVERTEXFORMAT);
    Direct3D->GetDevice()->SetTexture(0, lpD3DTexture);
    Direct3D->SetRS(D3DRS_ZENABLE, FALSE);
    Direct3D->GetDevice()->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 2, SpriteVertieces, sizeof(SSpriteVertex));
    Direct3D->GetDevice()->SetTexture(0, NULL);
}

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

10

09.05.2003, 17:01

Deine Vertexstruktur hat sechs Elemente:

Quellcode

1
2
3
4
5
struct SSpriteVertex 
{ 
   float x, y, z, rhw; 
   float tu, tv; 
};


Im Code füllst Du aber nur fünf pro Vertex aus. :rolleyes:

Werbeanzeige