Laden...

Grafikprogrammierung mit DirectX oder OpenGL ???

Erstellt von oehrle vor 13 Jahren Letzter Beitrag vor 13 Jahren 6.868 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 13 Jahren
Grafikprogrammierung mit DirectX oder OpenGL ???

Hallo, ich habe schon mal ein bischen 3D bei DirectX-3D geschnuppert. Ich muss ein rotierendes Teil erzeugen, das auf einen anderen Gegensatnd trifft, und den Abdruck darstellen, das in 3D. Nun habe ich mir schon überlegt was man dazu nimmt. Was sagt die Community dazu? Welche alternativen gibt es? OpenGL kann man anscheinend auch ohne Probleme auf andere Betriebssysteme übertragen (neu kompilieren). Was ist nun die bessere Alternative? Ich programmiere C#. Wer kann dazu ein gutes Buch empfehlen (VErständliche schreibweise?)

Gelöschter Account
vor 13 Jahren

OpenGL kann man anscheinend auch ohne Probleme auf andere Betriebssysteme übertragen (neu kompilieren).

open gl ja... nur verwendest du c# und das wiederrum ist nur mit mono auf andere betriebssysteme übertragbar. daher solltest du dich unbedingt jetzt schon entscheiden, ob das ein muss ist oder nicht und erst wenn du das weißt, können wir dir spezifische tipps geben.

wenn du bei windows bleiben kannst, wäre da nämlich xna zu empfehlen, was dir schon zielmlcih viel arbeit abnehmen würde...

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

Ich muss ein rotierendes Teil erzeugen, das auf einen anderen Gegensatnd trifft, und den Abdruck darstellen, das in 3D.

Ich gehe deswegen davon aus dass es kein Spiel ist sondern eine technische Anwendung. Hierfür kann ich das Visualization Toolkit (VTK) empfehlen. Dazu gibt es auch Wrapper für C#.

VTK basiert auf OpenGL allerdings wird dir - ähnlich wie bei XNA - ein Großteil der Routinearbeit abgenommen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 13 Jahren
Entscheidung nicht eindeutig

Hallo, habe mir das mal angesehen. Also das VTK kann ich schlecht beurteilen, da man nicht allzuviel Doku dazu findet (auch so gut wie keine Beispiele). und XNA, ist das doch hauptsächlich für Spieleprogrammierung? Ich möchte mit drehenden Werkzeugen experimentieren, so mein Wunsch. Und das in 3D, aber ich denke das ist hammerhart.
Welche guten, kostengünstigen alternativen gibts noch für C# ?

Gelöschter Account
vor 13 Jahren

und XNA, ist das doch hauptsächlich für Spieleprogrammierung?

ja und? du willst was in 3d darstellen und du willst etwas bestimmtes mit den 3 d modellen machen... warum dann nciht eine fertige gameengine?!? ob das nun eine spielfigur ist oder ein wissenschaftliches modell ist der engine herzlichst egal.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 13 Jahren
Nachteile von XNA gegenüber DirectX 3D ??

Habe ich irgendwelche Nachteile oder Vorteile gegenüber DirectX? Ich bin da eh ein Frischling. Evtl. gibts da auch etwas um andere Datenformate einzulesen (CAD-Daten oder so ...)

Es ist also mehr für den technischen Bereich gedacht.

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

Also das VTK kann ich schlecht beurteilen, da man nicht allzuviel Doku dazu findet (auch so gut wie keine Beispiele).

Das kann ich nicht behaupten. Für C# findet man nicht allzuviel, das stimmt. VTK ist in C++ geschrieben und von den Herstellern auch für TCL gedacht worden. Daher gibt es die meisten Beispiel in einer der beiden Sprachen. Siehe zB Example Code und das eigene Wiki für Beispiele 😉 Doku gibt es auch unter Documentation. Auch wenn sich das auf C++ oder TCL bezieht sollte es kein Problem sein die Beispiel zu verstehen. Ich habe weder von C++ noch von TCL eine Ahnung und dank der objektorienten Umsetzung sind die Beispiele für mich gut lesbar gewesen.

Ob nun VTK oder XNA ist dir überlassen. Ich habe auch mit beiden gearbeitet und die Unterschiede in der von Haus aus gebotenen Funktionalität (Init, Zoom, Rotate, Pan, Primitiven zeichnen) sind äußerst gering und in beiden sehr komfortabel umzusetzen.
Mittlerweile bin ich nur noch bei VTK da sehr viele Funktionen aus dem Bereich der wissenschaftlichen Visualisierung geboten werden - die in XNA verständlicherweise nicht benötigt werden da die gedachte Zielanwendergruppe eine andere ist, aber siehe Jacks Antwort.

Habe ich irgendwelche Nachteile oder Vorteile gegenüber DirectX?

DirectX oder OpenGL ist die unterste Ebene in der du alles selbst machen musst. Bei XNA oder VTK erledigen diese die Routineaufgaben und stellen viele Vereinfachungen dar.
Nachteil? Eventuell die geringe Geschwindigkeit durch den Overhead, aber davon habe ich noch nie was gemerkt und Echtzeit-Simulation mach ich ja nicht 😉

CAD-Daten

Das muss spezifiert werden ob IGES, VRML, STL, XYZ, etc. Aber es geht. Eventuell über ein Zwischenprogramm.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

Gelöschter Account
vor 13 Jahren

xna basiert auf directx.

Eventuell die geringe Geschwindigkeit durch den Overhead

wenn es für komplexe spiele ausreicht, reicht es auch aus um 2 gegenstände aufeinander prallen zu lassen (vernünftige polygonzahl vorrausgesetzt)

ein vermutlich unwesentlicher vorteil wäre, das du den vorgang auf einer x-box simulieren könntest 😄

CAD-Daten

dafür gibt es auch bereits fertige controls, die sowas darstellen können aber ich vermite mal das deine kollisions-sache mit diesen daten zu tun hat also wirst du sie ohnehin selber auslesen und interpretieren müssen, um dann die kollision zu vollziehen.

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

ein Vorteil der für XNA spricht ist dass es viele Codes gibt die ähnliche Problem behandeln. Dabei soll es wurscht sein ob der Code für Spiele gedacht ist oder nicht, technisch gesehen sind alles nur Polygone, etc.

Für die Kollision zB kann 3D model collision verwendet werden.

Eventuell wäre Drawing3D noch eine weitere Alternative. Basiert auf OpenGL ist ein C#-Wrapper (des Tao-Wrappers) und ist laut Hersteller für CAD entworfen worden. Ich hab damit nur mal rumgespielt, mehr Erfahrung hab ich damit nicht - ich weiß nur noch dass es sehr einfach ist Primitiven zu erstellen (also wenig Code notwendig ist).

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 13 Jahren
Danke für Tipp

Hallo gfoidl,

ich denke Drawing 3D ist erst mal genau das zum Einsteigen. Danke dir.

B
387 Beiträge seit 2005
vor 13 Jahren

Hi,

was natürlich auch interessant ist, sind die 3D Fähigkeiten von WPF. Wenn deine 3D Szenen nicht extrem aufwändig werden, kann das eine recht einfache und schlanke Alternative sein. Bin selbst gerade dabei, mir das anzuschauen. Ist eigentlich ganz interessant.

Hier mal einer von vielen Links dazu:
http://www.wpftutorial.net/IntroductionTo3D.html

Gruß

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo Blacal,

mit WPF habe ich in dieser Hinsicht auch ein wenig experimentiert. Was mich allerdings enttäuscht hat ist das Fehlen von Primitiven wie zB einer Kugel die ohne zusätzliche Komponente nicht einfach erstellbar ist. Selbiges gilt für die Manipulation der Ansicht (Rotate, Zoom, Pan).

Oder hab ich da was übersehen?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

B
387 Beiträge seit 2005
vor 13 Jahren

Ne, den gleichen Eindruck habe ich auch.
Aber gut, dafür findet man genügend in die Richtung: http://www.codegod.de/WebAppCodeGod/wpf-3d-animations-and-textures-AID439.aspx

Vorteil, den ich sehe, ist die nahtlose Integration in die restliche Gui (wenn man WPF verwendet). Kriegt man zwar mit XNA oder SlimDX auch hin, aber da wirds dann schon wieder etwas aufwendiger.

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo Blacal,

Ne, den gleichen Eindruck habe ich auch. Aber gut, dafür findet man genügend

Ein wenig wundere ich mich da schon warum das Mircosoft nicht von Haus aus mit aufgenommen hat - das würde den Weg zu 3D für WPF ebnen, aber so haben sie mehr Hindernisse in den Weg gelegt als notwendig wären...

Vorteil, den ich sehe, ist die nahtlose Integration in die restliche Gui

Das geht zB bei VTK und Direct3D auch denn da wird ein Control mitgeliefert. XNA in Winforms einbinden ist schon mit ein wenig coden verbunden, aber es geht auch. Wie du jedoch erwähnt hast ist die WPF3D in WPF-Lösung vom Ansatz her sicherlich elegant.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

Gelöschter Account
vor 13 Jahren

wpf hat in verbindung mit 3d einige schwächen. wenn man es perfomant möchte und die schwächen nciht haben will, wäre ein einbetten zu empfehlen.

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo Jack,

wäre ein einbetten zu empfehlen.

Was wo einbetten?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

Gelöschter Account
vor 13 Jahren

na die idee xna einzubetten, wenn man schon eine interaktive gui haben will.