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

23.09.2010, 12:04

Tribase: Textur ist rot

Hi leute


ich wollt mir einfach mal ein kleines programm mit der tribase engine schreiben
alles schön und gut, aber ich lade in einer klasse eine textur, bestimme die vertizes und setze auch die texturkoordinaten
aber was rauskommt ist das bild (eine jpg oder bmp datei war der ursprung) komplett rot, wie schwarz/weiss nur halt schwarz/rot

sieht halt doof aus

was kann man dagegen machen?

mfg mosho

PS: der code ist quasi komplett indentisch mit dem intro breakanoid code...

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

2

23.09.2010, 12:25

Auf was hast du die Farbwerte der Vertices gesetzt ?

3

23.09.2010, 12:28

das ist D3DColor(0x000000)...

4

23.09.2010, 12:43

Zeig mal den Code bitte...
fka tm

5

23.09.2010, 12:50

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
struct IntroVertex
{
    D3DXVECTOR3 pos;
    D3DCOLOR col;
    float RHW;
    D3DXVECTOR2 tex;
};
#define FVF_INTROFVF ( D3DFVF_DIFFUSE | D3DFVF_XYZRHW | D3DFVF_TEX1 )

IntroVertex m_aBackgroundVertizes[4];

this->m_aBackgroundVertizes[0].pos = D3DXVECTOR3(0.0f, d3d.GetScreenSize().y, 0.5f);
this->m_aBackgroundVertizes[0].tex = D3DXVECTOR2(0.0f, 1.0f);
this->m_aBackgroundVertizes[0].RHW = 1.0f;
this->m_aBackgroundVertizes[0].col = D3DCOLOR(0x000000);

this->m_aBackgroundVertizes[1].pos = D3DXVECTOR3(0.0f, 0.0f, 0.0f);
this->m_aBackgroundVertizes[1].tex = D3DXVECTOR2(0.0f, 0.0f);
this->m_aBackgroundVertizes[1].RHW = 1.0f;
this->m_aBackgroundVertizes[1].col = D3DCOLOR(0x000000);

this->m_aBackgroundVertizes[2].pos = D3DXVECTOR3(d3d.GetScreenSize().x, d3d.GetScreenSize().y, 0.5f);
this->m_aBackgroundVertizes[2].tex = D3DXVECTOR2(1.0f, 1.0f);
this->m_aBackgroundVertizes[2].RHW = 1.0f;
this->m_aBackgroundVertizes[2].col = D3DCOLOR(0x000000);

this->m_aBackgroundVertizes[3].pos = D3DXVECTOR3(d3d.GetScreenSize().x, 0.0f, 0.5f);
this->m_aBackgroundVertizes[3].tex = D3DXVECTOR2(1.0f, 0.0f);
this->m_aBackgroundVertizes[3].RHW = 1.0f;
this->m_aBackgroundVertizes[3].col = D3DCOLOR(0x000000);


PDIRECT3DTEXTURE9 m_BackgroundTex;
this->m_BackgroundTex = tbTextureManager::Instance().GetTexture("Data\\background.bmp");

tbDirect3D & d3d = tbDirect3D::Instance();
d3d.SetFVF(FVF_INTROFVF);
d3d.SetRS(D3DRS_ZENABLE, FALSE);
d3d.SetTexture(0, this->m_BackgroundTex);
d3d->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, this->m_aBackgroundVertizes, sizeof(IntroVertex));

6

23.09.2010, 12:57

Ich gehe mal davon aus, dass die Textur korrekt geladen wird.

Den Farbwert solltest du ändern zu D3DCOLOR(0x00000000). Zwei Nullen anhängen (AARRGGBB)
fka tm

7

23.09.2010, 13:06

hab das geändert, ist aber ja eigentliche gal weil 0 ja auch 00000 ist... ;)

naja also M_BackgroundTex zeigt nicht auf Null, sie wird ja auch angezeigt nur halt mit nem extremen rotstich

8

23.09.2010, 13:12

Licht ausgeschaltet?
Was für andere Renderstates bzw. TextureStates setzt du noch?
fka tm

9

23.09.2010, 13:18

keine

alles andere ist unberührt, nur standard bzw. das was dann tribase anschaltet

10

23.09.2010, 13:45

Licht sollte aus sein (Standard ist An):

C-/C++-Quelltext

1
d3d.SetRS(D3DRS_LIGHTING, FALSE);


Dann kann es nicht schaden, DX mitzuteilen, wie die Farben berechnet werden:

C-/C++-Quelltext

1
2
3
d3d.SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE2X );   
d3d.SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_DIFFUSE );
d3d.SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_TEXTURE );


Für die Vertexfarben:

C-/C++-Quelltext

1
this->m_aBackgroundVertizes[n].col = D3DCOLOR_ARGB(0, 0, 0, 0);
fka tm

Werbeanzeige