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

Mind

Treue Seele

  • »Mind« ist der Autor dieses Themas
  • Private Nachricht senden

1

29.03.2004, 19:31

Problem mit Texturen

Hi
ich bins mal wieder =)

also da mir Osram mit dem Matheproblem sehr gut geholfen hat ( Danke nochmal für die Mühe ) wollte ich jetzt weiter machen.

Und zwar ich rendere einen Baum mit seinen Ästen und Blättern.
dafür hab ich 2 VertexBuffer einer für die Äste und den Stamm und einen für die Blätter. Die Texturen spann ich bei den Ästen um die Quader aussenrum bei dem blatt ein einfaches Rechteck.

So nun setzt ich die renderstates für die Äste setzt den vertexbuffer und render und das selbe für die Blätter danach.

Jetzt hab ich das unschöne Problem das er Äste die hinter einen anderen Ast sind noch einwirkungen auf den forderen Ast haben dort entstehen kleine Linien auf der Texture, die sich je nach kamera auch ändern. Auch die Blätter sieht man durch als wäre da was mit AlphaBlending gemacht.
AlphaBlending ist aber deaktiviert für die Äste.


Ich hab jetzt schon wirklich alles mögliche an Renderstates probiert es hilft einfach nichts der Effekt geht nur weg wenn ich ZENABLE auf FALSE setzte aber das brauch ja. An was könnte das liegen?

Mind

Treue Seele

  • »Mind« ist der Autor dieses Themas
  • Private Nachricht senden

2

30.03.2004, 19:58

weiß keiner an was das liegen könnte oder anders gefragt wie is normalerweise die vorgehensweise bei sowas sprich welche renderstates etc

Anonymous

unregistriert

3

30.03.2004, 22:05

Was für eine Graka?(ich habe ne ati9800se und da tritt flackern öfters auf).

Mind

Treue Seele

  • »Mind« ist der Autor dieses Themas
  • Private Nachricht senden

4

30.03.2004, 22:56

wie das flakern tritt öfters auf? hab eine ati9500pro
das kann ich mir gar net vorstellen.
vor allem das die blätter durschauen macht mich stütztig als wäre die baumstruktur mit alphablending ist sie aber net

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

5

31.03.2004, 13:25

Malst Du jedes Blatt einzeln?
Oder hast Du eine Alfa- oder Mask-Textur mit ner Menge Blättern drauf?

Mind

Treue Seele

  • »Mind« ist der Autor dieses Themas
  • Private Nachricht senden

6

31.03.2004, 15:03

momentan hab ich erst nur ein Blatt also eine Textur die ich jedes mal rendere oder wie soll ich das sonst machen?
später will ich mehre Blätter auf eine Texture bringen aber was hat das damit zu tun das is ja nur ne Performance Frage.

also am besten ich mach mal nen screenshort die frage ist nur wo ich das mal ablegen kann damit ichs hier posten kann =)

Mind

Treue Seele

  • »Mind« ist der Autor dieses Themas
  • Private Nachricht senden

7

31.03.2004, 19:25

also hier ist der screnni


(Link)


man sieht genau bei den ästen das da öftesr mal schwarze linien auftauchen die sich aber mit Änderung der Kamera auch ändern.
Die Linien gehen komischer weise weg wenn ich ZENALBE auf FALSE setzte.
und das nächste was auffällt ist das die Blätter durchschauen.


die renderstates sehen so aus zuerst die äste dann die blätter

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
tex = tbTextureManager::GetTexture("data\\TREEBRK4.jpg",TRUE, D3DX_DEFAULT, D3DX_DEFAULT, 1);
tex2 = tbTextureManager::GetTexture("data\\species1_01.bmp", TRUE, D3DX_DEFAULT, D3DX_DEFAULT, 1, D3DFMT_UNKNOWN, 0, D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT, D3DCOLOR_XRGB(255, 0, 255));   

tbDirect3D::SetRS(D3DRS_LIGHTING, FALSE);
tbDirect3D::SetRS(D3DRS_CULLMODE, D3DCULL_CCW);
tbDirect3D::SetRS(D3DRS_DITHERENABLE, TRUE);


tbDirect3D::SetRS(D3DRS_ZWRITEENABLE,D3DZB_TRUE);
tbDirect3D::SetRS(D3DRS_ZENABLE, D3DZB_TRUE);

tbDirect3D::SetTSS(0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1);
tbDirect3D::SetTSS(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
tbDirect3D::SetTSS(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
tbDirect3D::SetTSS(0, D3DTSS_ALPHAOP,   D3DTOP_DISABLE);

tbDirect3D::SetRS(D3DRS_ALPHABLENDENABLE, FALSE);

// Vertexformat und Vertex-Buffer als Quelle setzen
tbDirect3D::SetFVF(TB_TREE_FVF);
tbDirect3D::GetDevice()->SetStreamSource(0, m_pVB->GetVB(), 0, sizeof(tbTreeVertex));


tbDirect3D::SetTexture(0, tex);

tbDirect3D::GetDevice()->DrawPrimitive(D3DPT_TRIANGLELIST,0,m_pVB->GetCursor()/3-2);



tbDirect3D::SetTexture(0, tex2);

tbDirect3D::GetDevice()->SetStreamSource(0, m_pLVB->GetVB(), 0, sizeof(tbTreeVertex));


tbDirect3D::SetRS(D3DRS_ALPHABLENDENABLE, TRUE);

tbDirect3D::SetRS(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
tbDirect3D::SetRS(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

tbDirect3D::SetRS(D3DRS_CULLMODE, D3DCULL_NONE);


tbDirect3D::SetTSS(0, D3DTSS_COLOROP,   D3DTOP_MODULATE);
tbDirect3D::SetTSS(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
tbDirect3D::SetTSS(0, D3DTSS_COLORARG2, D3DTA_CURRENT);


tbDirect3D::SetTSS(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
tbDirect3D::SetTSS(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
tbDirect3D::SetTSS(0, D3DTSS_ALPHAARG2, D3DTA_CURRENT);



tbDirect3D::GetDevice()->DrawPrimitive(D3DPT_TRIANGLELIST,0,m_pLVB->GetCursor()/3-2);


kann sein das einige renderstates schwachsinn sind falls ja mir bitte sagen will ja was lernen ;-)

wäre nette wenn mir einer helfen könnte

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

8

01.04.2004, 00:20

Hast Du den neuesten GraKa Treiber?

Mind

Treue Seele

  • »Mind« ist der Autor dieses Themas
  • Private Nachricht senden

9

01.04.2004, 09:07

hm also höchstens 3 monate alt aber denkst echt das liegt daran?
warum hab ich das problem dann nicht bei anderen spielen?

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

10

01.04.2004, 09:37

Es sieht aus wie Z-Buffer Fehler. Man kann aber als DX Programmierer, d.h. jemand der die High Level Grafik programmiert, solche Fehler innerhalb eines Polys nicht wirklich erzeugen. Einzige Ausnahme wären vielleicht falsche Parameter beim Erzeugen der Buffer, da müsste ich in die Hilfe schauen.

Daher die Idee, dass es ein Graka Treiber Fehler ist.

Theoretisch könnte es auch ein Alfaproblem sein. Die Form der Blätter ist ja sicher mit Alfa gemacht, oder?

Werbeanzeige