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

1

07.02.2010, 20:51

Textur Problem

Hi Leute mal wieder ne Programmierfrage:

Ich habe ein Problem mit einer Textur:

Das ist die Textur (Pink soll durchsichtig werden)

(Link)


Und so siehst aus:

(Link)


und hier der Code:

C-/C++-Quelltext

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
SVertex aVertex[4];
            
                    // Vertexformat und textur setzen

                    aVertex[1].dwFVF = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1;
                    
                    D3D.SetFVF(aVertex[1].dwFVF);
                    D3D.SetTexture(0, m_pStreet3);

                    D3D.SetRS(D3DRS_ALPHABLENDENABLE, TRUE);
                    D3D.SetRS(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
                    D3D.SetRS(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
                    D3D.SetRS(D3DRS_BLENDOP, D3DBLENDOP_ADD);

                    D3D->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
                    D3D->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
                    D3D->SetTextureStageState(0,D3DTSS_COLORARG2,D3DTA_DIFFUSE);


                    // Die vier Vertizes

                    // Links unten

                    aVertex[0].vPosition = tbVector3(-40, 0, -60);
                    aVertex[0].fRHW = 1.0f;
                    aVertex[0].Color = tbColor(1.0f, 1.0f, 1.0f);
                    aVertex[0].vTex0 = tbVector2(0.0f, 1.0f);

                    // Links oben

                    aVertex[1].vPosition = tbVector3(-40, 0, 60);
                    aVertex[1].fRHW = 1.0f;
                    aVertex[1].Color = tbColor(1.0f, 1.0f, 1.0f);
                    aVertex[1].vTex0 = tbVector2(0.0f, 0.0f);

                    // Rechts unten

                    aVertex[2].vPosition = tbVector3(40, 0, -60);
                    aVertex[2].fRHW = 1.0f;
                    aVertex[2].Color = tbColor(1.0f, 1.0f, 1.0f);
                    aVertex[2].vTex0 = tbVector2(1.0f, 1.0f);

                    // Rechts oben

                    aVertex[3].vPosition = tbVector3(40, 0, 60);
                    aVertex[3].fRHW = 1.0f;
                    aVertex[3].Color = tbColor(1.0f, 1.0f, 1.0f);
                    aVertex[3].vTex0 = tbVector2(1.0f, 0.0f);

                    // Als Dreiecksfolge zeichnen

                    D3D->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex, sizeof(SVertex));


und das laden:

C-/C++-Quelltext

1
2
m_pStreet3 = tbTextureManager::Instance().GetTexture("Data\\street\\Einmündung.bmp",TRUE ,D3DX_DEFAULT,D3DX_DEFAULT ,D3DX_DEFAULT ,D3DFMT_UNKNOWN ,0 , D3DPOOL_MANAGED ,D3DX_DEFAULT ,D3DX_DEFAULT, 0x00FF00FF);
        if(m_pStreet3 == NULL) TB_ERROR("Fehler beim Laden von der Einmündung", TB_ERROR);


Wnn mir jemand helfen könnte wär das toll
Rechtschreibefehler sind gewollt und sollen euer Unterbewusstsein beeinflussen ;-)

"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."

Erschaffen statt vernichten, dass ist die wahre Kunst

2

07.02.2010, 20:56

Müsste es nicht heissen:
0xFFFF00FF

idontknow

unregistriert

3

07.02.2010, 20:57

Sieht mir nach falschen Textur Koordinaten aus!

Ich versteh gar nicht wie sich das Biuld zusammensetzt, das verzerrte soll diese Textur sein, die Straße rechts was anderes?

4

07.02.2010, 21:08

@E122 eigentlich nicht oder doch, naja hat sich nichts geändert.
@idontknow ja das verzehrte Rechteck ist die Textur. Das andere sind Modelle, außer das Tacho.
Rechtschreibefehler sind gewollt und sollen euer Unterbewusstsein beeinflussen ;-)

"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."

Erschaffen statt vernichten, dass ist die wahre Kunst

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

5

08.02.2010, 17:18

Sieht imo irgendwie nach D3DRS_Clamp aus, auch wenn das scheinbar nicht der Fall ist...

Ansonsten mal die Texturkoordinaten überprüfen...

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

Beiträge: 774

Beruf: Student

  • Private Nachricht senden

6

08.02.2010, 17:33

Zitat

C-/C++-Quelltext

1
aVertex[1].dwFVF = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1; 


Diese Zeile ist mir nicht ganz klar.. du hast das FVF schon als static in deiner Vertexstruktur hoffe ich doch?
Zeig doch mal die Struktur. Deine Texturkoordinaten scheinen zu stimmen so wie ich das überflieg.

7

08.02.2010, 22:23

ähm nein das ist nicht static ging bissher immer und wenn ich das static mache kommen Linkerfehler...

zur Zeit siehts so aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
struct SVertex
{
    tbVector3           vPosition;
    float               fRHW;
    D3DCOLOR            Color;
    tbVector2           vTex0;
    DWORD               dwFVF;
};
Rechtschreibefehler sind gewollt und sollen euer Unterbewusstsein beeinflussen ;-)

"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."

Erschaffen statt vernichten, dass ist die wahre Kunst

BlazeX

Alter Hase

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

8

08.02.2010, 23:15

Probiers mal mit static const:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
struct SVertex 
{ 
    tbVector3            vPosition; 
    float                fRHW; 
    D3DCOLOR            Color; 
    tbVector2            vTex0; 
    static const DWORD dwFVF= D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1;
};

9

09.02.2010, 10:34

Textur bleibt wie sie ist...
Und so sieht das danze OHNE Alphablending aus:

(Link)
Rechtschreibefehler sind gewollt und sollen euer Unterbewusstsein beeinflussen ;-)

"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."

Erschaffen statt vernichten, dass ist die wahre Kunst

10

09.02.2010, 11:58

Ich glaube das liegt irgendwie an dem fRHW (weiss gerade nicht wofür das steht) in der Vertexstruktur, da dafür kein Flag vorhanden ist und D3D dann glaub ich an der Stelle in der Struktur schon die Farbe erwartet (Ich hatte mal ein ähnliches Problem). Versuch mal das ans Ende der Struktur zu schreiben. Ansonsten gibt es statt D3DFVF_XYZ auch noch D3DFVF_XYZRHW aber ich weiss gerade nicht ob das das macht, was du willst.

Edit: wenn ich das grad richtig gelesen hab sollte XYZRHW mit fRHW an der jetzigen Stelle funktionieren oder man lässt XYZ und nimmt fRHW aus der Struktur raus.

Werbeanzeige