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

09.03.2004, 20:05

Mehrere Texturen in einer Welt

Hallo!

Wie funktioniert es, das wenn man z.B. mit Indizes mehrere Würfel erstellt, jeder mit einer Extra Textur belegt wird? Bis jetzt kann ich nur immer 1 Textur für die ganze Welt nehmen!

Viele Grüße

Mario

Doniel

Frischling

Beiträge: 29

Wohnort: Erbach im Rheingau

Beruf: Schüler

  • Private Nachricht senden

2

09.03.2004, 20:24

Meinst du: lpD3DDevice->SetTexture(0 /*Texturlevel*/, lpTexture); ?

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

3

09.03.2004, 20:52

naja, wie Doniel schon gesagt hat mit

Quellcode

1
D3DDevice->SetTexture(0, lpTexture)


setzt du eine neue Textur auf die Texturschicht (in diesem Fall 0) (also 1 ;) ). Wenn du eine andere Textur also setzen möchtest, gibst du eine andere Textur als 2. Parameter in der Funktion an, die du vorher geladen hast.

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

4

09.03.2004, 21:26

Vielleicht is das auch ein Verständnisproblem:

Direct3D arbeitet ja (wie OpenGL auch, oder?) mit States. Das heißt, du musst, wenn du die Würfel renderst, eben für jeden Würfel eine andere globale Textur setzen - also für jeden einzeln.

Quellcode

1
2
3
4
5
6
7
8
device->SetTextur(0, pTextur1);
Wuerfel1->Render();

device->SetTextur(0, pTextur2);
Wuerfel2->Render();

device->SetTextur(0, pTextur3);
Wuerfel3->Render();
Mozilla Firefox
The Browser - reloaded

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

5

09.03.2004, 23:34

Du kannst pro DrawIndexedPrimitive nur eine Textur benutzen. Wenn Du also z.B. so dumm wärst und alle 6 Seiten hätten unterschiedliche Texturen, so bräuchtest Du 6 DrawIndexedPrimitive Aufrufe um einen Würfel zu rendern. Das ist der Grund, dass heutzutage so viel auf eine Textur geklatscht wird.

Man kann es auch anders sagen: IB und VB alleine definieren NICHT vollständig ein 3D Objekt.

6

10.03.2004, 20:29

Keine Primitiven!?!

Und wie kann ich das machen, das ich z.B. Wuerfel1->Render mache?

Viele Grüße

Mario

Anonymous

unregistriert

7

10.03.2004, 21:28

Dann musst du einfach in der renderfunktion die andere textur setzten. Ergo du verschiebst den aufruf nur. Mach das ganze einfach leserlicher ;) .
Und noch etwas man nimmt deshalb große Texturen, weil eine große von der GPU effektiver zu verwalten ist als mehre kleine.

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

8

12.03.2004, 18:34

Wie schon gesagt wurde, VB und IB machen kein 3D-Objekt aus! Wenn du "Wuerfel1->Render" haben willst, brauchst du für deine (Würfel-)Klasse mehrere Texturen, die dann jeweils vor dem Rendern derjenigen Seite über das D3D-Device gesetzt werden.

Also sprich: Über D3D kannst du einfach nur Texturen SETZEN. Die Zuordnung Objekt ==> Textur bzw. Face ==> Textur musst du allein implementieren!
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

Werbeanzeige