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

21

12.02.2007, 15:45

Zitat von »"Benutzername"«


:?: Wie erstell man Meshes?

in C# war es glaube ich

C-/C++-Quelltext

1
Microsoft.DirectX.Direct3D.Mesh mesh= new Microsoft.DirectX.Direct3D.Mesh();

Zitat von »"Benutzername"«


:?: Wie bekommt man die Graphik-Ausgabe (unter VS05) z.B. in eine PictureBox?

Übergib bei der Erstellung des Devices das Handle der PictureBox anstelle des Fensters.

22

13.02.2007, 12:47

Mein Test-Programm hat nun ein device mit

:arrow: Beleuchtung
:arrow: VertexBuffer mit Zylinder (aus Dreiecken) mit Orientierung.

Die Steuerung ist wie bei einem Flugzeug.


Frage:

:?: Wie ordne ich einem device mehrere Graphik-Objekte zu und wie sind die dann
einzeln zu steuern? D.h. Wie sage ich dem device, mit welcher Transformationsmatrix er
welches Graphik-Objekt bewegen soll? Kommen die Graphik-Objekte in einen Buffer
oder in mehere
?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

23

13.02.2007, 13:18

1 weltmatrix 1 setzen
2 objetk 1 rendern
3 weltmatrix 2 setzen
4 objekt 2 rendern
.
.
.

wie du das ganze organisierst (alles is einen buffer etc.), ist dir überlassen.

24

13.02.2007, 13:21

Zitat von »"Benutzername"«


Frage:

:?: Wie ordne ich einem device mehrere Graphik-Objekte zu und wie sind die dann
einzeln zu steuern? D.h. Wie sage ich dem device, mit welcher Transformationsmatrix er
welches Graphik-Objekt bewegen soll? Kommen die Graphik-Objekte in einen Buffer
oder in mehere
?

Das musst du schon selber machen. Du musst deine Grafiken laden und mit dem Device im Grafikspeicher ablegen wenn du sie benutzen willst. Genaus verhällt es sich mit 3D Körper die einen VertexBuffer brauchen.

Bei jedem Schleifendurchgang deiner Anwendung musst du dann selber prüfen ob eine Matrix´neu gesetzt werden muss und es dann auch selber machen. Auf die Art gehst du bei jedem Durchlauf jedes Objekt durch, setzt die jeweilige Matrix neu, legst fest welche Textur verwendet werden soll usw.

Das würde dir höchstens eine fertige Grafikengine abnehmen.

25

13.02.2007, 14:20

Ach so muß das... Das kann man natürlich von Hand irgendwie machen, aber ist das dann
auch so effektiv, daß das ganze gut läuft? Ich meine: macht eine fertige Grafik-Engine das
auch so, oder ist sie aus prinzipiellen Gründen schneller - meinetwegen, weil sie irgend-
welche Hardware benutzt, die man so ohne weiteres nicht selber ansprechen kann?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

26

13.02.2007, 14:23

wie effektiv das ist hängt von haufenweise sachen ab.
eine grafikengine verwendet auch nur directx oder ogl und macht im prinzip auch nix andres. nur haben halt die leute die die engine entwickelt haben unter umständen ziemlich ahnung was sie machen...

wenn es dir nur darum geht spiele zu entwickeln, ist es sicher nicht verkehrt ein paar kleine sachen mit directx zu machen, damit du weist wie das alles theoretisch funktioniert und dann eine fertige engine zu verwenden, um dich mehr auf das spiel als auf die technik im hintergrund zu kümmern :)

27

13.02.2007, 18:46

:) Nun gehts: es fliegen jetzt mehrere Zylinder rum und lassen sich steuern!

:?: Ist es ratsam so vorzugehen:

device.Clear()
device("Mach jetzt alles neu!")

:?: oder doch besser so:

device("Übermale jetzt mal alles, was sich geändert hat und den Rest bitte so lassen, ja?")

28

13.02.2007, 19:23

Du musst schon löschen da du ja meist mehrere backbuffer hast die du beim Bildaufbau wechelst. Also einer der angezeigt wird und einer in den du zeichnen kannst. Würdest du alles lassen würdest du nicht in das letzte sondern in das vorletzte Bild zeichnen.

Von daher musst du erst löschen.

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

29

14.02.2007, 22:10

Zitat von »"chriss"«

... da du ja meist mehrere backbuffer hast ...

ich denke in 99% aller fälle reicht ein backbuffer, oder täusche ich mich da? und wenn du beispielsweise eine skybox hast, die sowieso den ganzen schrott des letzten frames überdeckt, kannst du das löschen auch weglassen.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

30

14.02.2007, 22:40

@Chris nicht zwangsläufig, was ist z.B. mit den alten Z-Bufferständen ;)
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige