PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OpenGL Programmieren mit C#


ESAD
2008-04-23, 16:30:16
Wir müssen fürs Studium etwas in OpenGl "bauen". Ich möchte mal nachfragen wie eure meinungen hinsichtlich OpenGL in verbindung mit C# ist. Es soll eher möglichst einfach handzuhaben sein geschwindigkeit ist egal.

Meinungen?

Kennt ihr gute Einstiegsbücher zu Opengl? Weniger auf die Mathematik ausgerichtet.
mfg

Chris Lux
2008-04-23, 17:25:10
http://www.taoframework.com/

das ist ein opengl wrapper fuer .net. die geschwindigkeit ist da kaum anders als bei nativem code.

http://nehe.gamedev.net/

das sind sehr gute opengl tutorials. glaub sogar, dass es von den lessons auch .net versionen gibt, einfach bei den einzelnen lessons unten nach dem code schauen.

HTH

del_4901
2008-04-23, 17:56:10
Schade dass ihr OGL nehmen müsst, kennt euer Prof kein XNA? Ich bin nämlich der Meinung das OGL (bis einschließlich Version 2.1) keine Zukunft mehr hat, das zu lernen ist verschwendette Zeit.

ESAD
2008-04-23, 18:00:58
er meint die platforumunabhägigkeit (mac,unix,windows) würde zu einer besseren chancengleichheit der studentenführen...

del_4901
2008-04-23, 18:04:22
er meint die platforumunabhägigkeit (max,unix,windows) würde zu einer besseren chancengleichheit der studentenführen...
Dann hat er keine Ahnung, weil OGL ist nichtmal unter ATI/Nvidia unter einen System Plattform unabhänig. (Es sei denn man bleibt bei den Basics... die haben aber nen Bart von 20 Jahren, und sollten nicht mehr genommen werden) Wenn ihr Plattformunanhänig arbeiten wollt, dann zieht einen Abrtraction-Layer vor die API. Dann wird für Windows/Xbox DX/XNA genommen und für den Rest OGL. (Am besten Version 3 ... wenn es soweit ist)

Ähm C# und Platform unabhänig ... (es gibt zwar Mono ... aber) ... bei nam Java Prof würde ich das noch nachvollziehen, die denken Sie könnten auf jeder Platform implementieren.
Nee, es ist eindeutig eine falsche Herrangehensweise, zu glauben OGL zu nehmen sei besser, da "Plattform unabhänig".

MadMan2k
2008-04-23, 18:05:56
Schade dass ihr OGL nehmen müsst, kennt euer Prof kein XNA? Ich bin nämlich der Meinung das OGL (bis einschließlich Version 2.1) keine Zukunft mehr hat, das zu lernen ist verschwendette Zeit.
einen höheren Stellenwert als dem Sterbenden OGL2 würde ich XNA auch nicht zuordnen, aber verschwendete Zeit werden wohl beide nicht sein. Die Konzpte sind ja ähnlich.

del_4901
2008-04-23, 18:08:52
einen höheren Stellenwert als dem Sterbenden OGL2 würde ich XNA auch nicht zuordnen, aber verschwendete Zeit werden wohl beide nicht sein. Die Konzpte sind ja ähnlich.
Die Konzepte von DX10 / XNA / OGL 3.0 sowie OGL2.1 / DX9 sind Grundverschieden!!!!!

MadMan2k
2008-04-23, 18:10:08
Wenn ihr Plattformunanhänig arbeiten wollt, dann zieht einen Abrtraction-Layer vor die API.
wenn man aber aus welchen gründen keinen Abstraction Layer haben will, bleibt aber nur OGL.

del_4901
2008-04-23, 18:12:32
wenn man aber aus welchen gründen keinen Abstraction Layer haben will, bleibt aber nur OGL.
Wenn man da keinen zieht ist man einfach nur nicht weitsichtig genug.
Unter OGL muss ich für (fast) jede Graka einen eigenen Renderer schreiben, das ist wohl besser, als eine Fassade (API Abstraction Layer), die ich in 5min in EA zusammenklicken kann, oder wie?

MadMan2k
2008-04-23, 18:15:36
Die Konzepte von DX10 / XNA / OGL 3.0 sowie OGL2.1 / DX9 sind Grundverschieden!!!!!
das Programmierkonzept ist vollkommen verschieden, aber das Prinzip ist trotzdem das selbe. Und zu fortgeschrittenen Themen wie Shaderprogrammeirung werden die wohl eh nicht kommen.

MadMan2k
2008-04-23, 18:17:37
Wenn man da keinen zieht ist man einfach nur nicht weitsichtig genug.
Unter OGL muss ich für (fast) jede Graka einen eigenen Renderer schreiben, das ist wohl besser, als eine Fassade (API Abstraction Layer), die ich in 5min in EA zusammenklicken kann, oder wie?
wenn man einfach ein Polygon auf den Bildschirm malen will, reicht auch unter OGL ein Renderer und wenn ich eine Richtige Engine haben will, würd ich ne fertige anpassen und nicht eine komplett selbst schreiben.

del_4901
2008-04-23, 18:17:45
das Programmierkonzept ist vollkommen verschieden, aber das Prinzip ist trotzdem das selbe. Und zu fortgeschrittenen Themen wie Shaderprogrammeirung werden die wohl eh nicht kommen.
Bei letzerem hast du warschenlich recht. Aber es gibt ander nützliche Sachen, welche nicht die Shader betreffen, die man eigentlich lernen sollte.

del_4901
2008-04-23, 18:49:35
wenn man einfach ein Polygon auf den Bildschirm malen will, reicht auch unter OGL ein Renderer und wenn ich eine Richtige Engine haben will, würd ich ne fertige anpassen und nicht eine komplett selbst schreiben.
Momentan wehren sich die OpenSource Engines noch gehörig gegen die neuen "Paradikmen", eine fertige anpassen ist vllt. keine so gute Idee (zur Zeit). Wobei ich grade über die AxiomEngine schaue, und das sieht ganz vielversprechend aus, sollte XNA erstmal laufen, den Rest dann zu portieren sollte um einiges leicher fallen. Ogre arbeitet ja auch schon an DX10, wobei da noch ein steiniger Weg vor denen liegt.

Frucht-Tiger
2008-04-23, 18:55:52
Also wenn das so abläuft wie meine Computergrafik Vorlesung, geht es eher darum einige theoretische Grundlagen mal nachzuspielen(Rasterizer, Projektionen, etc.).

Wir haben dafür auch OpenGL(+Qt) benutzt und es war völlig in Ordnung, nicht jeder Informatik Student will unter die 3D-Programmierer gehen.

@Topic: Zum Nachschlagen habe ich die OpenGL Superbible (http://www.amazon.de/OpenGL-SuperBible-Comprehensive-Tutorial-Reference/dp/0321498828/ref=sr_1_2?ie=UTF8&s=books-intl-de&qid=1208969287&sr=8-2) genommen, war das ein oder andere mal ganz hilfreich. Ganz ohne Mathe geht es natürlich nicht, denn dann wäre jedes Buch über dieses Thema einfach leer, aber es ist sehr einfach gehalten.

Demirug
2008-04-23, 19:09:05
Ogre arbeitet ja auch schon an DX10, wobei da noch ein steiniger Weg vor denen liegt.

Jeder der mit einem Direct3D 9/OpenGL 2.x Abstraktion Layer auf D3D10 will fliegt früher oder später auf die Nase. Das funktioniert einfach nicht.

Shink
2008-04-23, 20:23:00
Oh Mann, was gibt es nur für seltsame Menschen.... an der Uni lernt man nunmal kein proprietäres Zeug wenn es sich irgendwie vermeiden lässt. Und manchmal auch Zeug das keiner verwendet (was OGL aber nun wirklich nicht ist wenn man über den Tellerrand schaut)

del_4901
2008-04-23, 20:45:06
Ich muss da an Fragen von Studenten denken, warum ihre Graka nicht das liefert, was versprochen wurde. Als ich dann den Code inspiziert habe, fand man solche Sachen wie:

gl_Beginn
...
gl_Normal
...
gl_Vertex
gl_End

Da habe ich erstmal dann erstmal nach Displaylisten gesucht (VBO usw. konnte ich mir ja erstmal spaaren), keine gefunden, naja die wussen halt nicht besser. Sowas sollte man besser gleich von Vornherrein von den Leuten fernhalten, die kommen sonst nur auf dumme Ideen. Porgrammierer sind echt ein manchmal schwieriges Völkchen.

Aber nen tollen BSP-Baum implementiert haben. Das sind doch keine Grundlagen auf denen man aufbauen kann, das sind Methoden aus der Steinzeit. :|

Gast
2008-04-23, 20:56:12
ok jeden frame jeden vertex einzeln mit glvertex an die graka schicken ist vllt aus performance gründen nicht immer das beste ;) aber funktionieren sollte zumindest sowas dennoch, auch auf jeder ogl fähigen graka mehr oder weniger gleich ?

maximAL
2008-04-23, 20:56:50
Da habe ich erstmal dann erstmal nach Displaylisten gesucht (VBO usw. konnte ich mir ja erstmal spaaren), keine gefunden, naja die wussen halt nicht besser.
anders haben wir auch nicht angefangen. und viel mehr als displaylisten ist danach auch nicht mehr gekommen. tja...

del_4901
2008-04-23, 21:02:28
ok jeden frame jeden vertex einzeln mit glvertex an die graka schicken ist vllt aus performance gründen nicht immer das beste ;) aber funktionieren sollte zumindest sowas dennoch, auch auf jeder ogl fähigen graka mehr oder weniger gleich ?

Ja natürlich. Aber wenn man das vermeiden will, und über Displayisten hinausgehen will, bekommt man schon den ersten Stein in den Weg gelegt.

Und die Geschichte mit den BSP Bäumen find ich auch hat, das ist einfach nur Quälerei für miniBatches. Bei nem Quadtree hätte ich ja nichts gesagt, sowas kann man auch heute noch gut gebrauchen, und da hätte man sich auch nicht so quälen müssen.

anders haben wir auch nicht angefangen. und viel mehr als displaylisten ist danach auch nicht mehr gekommen. tja...
Das ist das erste Fettnäpchen welches man als 3d-Programmierer so mitnehmen kann, das ist erstmal eine Sackgasse, und wenn der Code das Refactoring nicht überlebt, höhren die m
Meißten auf.

Gast
2008-04-23, 21:39:21
wie sollte man denn zZ am sinnvollsten anfangen (unter der vorraussetzung dass man zumindest schonmal keinen vista only code schreiben möchte)

del_4901
2008-04-23, 21:45:48
wie sollte man denn zZ am sinnvollsten anfangen (unter der vorraussetzung dass man zumindest schonmal keinen vista only code schreiben möchte)
XNA ist gar nicht so verkehrt, Und wenn es auf Linux etc. laufen soll, sollte man lieber bis OGL3.0 warten (wobei das noch ewig dauern könnte).

Coda
2008-04-23, 22:18:11
Jeder der mit einem Direct3D 9/OpenGL 2.x Abstraktion Layer auf D3D10 will fliegt früher oder später auf die Nase. Das funktioniert einfach nicht.
Naja funktionieren tut's ja schon, nur nicht besonders performant anscheinend.

Chris Lux
2008-04-23, 23:29:15
also diese diskussion finde ich jedes mal sehr sinnbefreit. blah blah OpenGL nicht portabel blah blah. OpenGL kann auch mit modernen features wie VBOs, FBOs und shadern portabel sein ohne gleich den immediate mode ranziehen zu muessen. klar ist die API gealtert und wird an vielen ecken vergewaltigt, aber es ist nunmal immer noch einer sehr viable alternative wenn es um portablen code geht. und mit keiner API faellt der einstieg so einfach wie mit OpenGL. klar weil man den immediate mode nutzen kann und wenn man weiter will merkt man auch irgendwann, dass dies nicht der weg ist und nutzt die modernen features.

ich finde es echt zum kotzen, dass immer solche diskussionen losgetreten werden muessen, wenn es doch um ganz andere fragen ging in dem thread!

my 2cents: XNA, D3D10, OpenGL... es ist echt total egal, sie machen bunte bilder auf dem bildschirm. und wenn die bilder aehnlich aussehen sollen sehen sogar die aufrufe irgendwann sehr aehnlich aus und die performance ist auch vergleichbar... AUCH mit dem angestaubten OpenGL!

ScottManDeath
2008-04-24, 00:19:09
Wenn man sich auf SM3.0 features beschränkt, dann ja.

Da zu Zeit nur NVIDIA alle (wie z.b. integer texturen, texture arrays, und nicht nur GS und stream out wie Intel und ATI) DX10 features per Extension unterstützt (und das nur unter Windows, und Linux, nicht unter MacOS), kann man nicht sagen das OpenGL für state of the art GPU implementierung platformunabhängig ist, sonder das man sich auf einen Hersteller (NVIDIA) und OS (XP,Vista, Linux) beschränken muss.

Deswegen sitze ich halt mit NVIDIA und WindowsXP fest, und koennte meinen Code nicht auf einer ATI karte laufen lassen. Mit D3D10 würde ich an Vista kleben, aber auf ATI Karten sollte es laufen. So oder so, für mich ist es eh nur theoretisch interessant, da ich meinen Kram nicht vertreiben muss, Elfenbeinturm ahoi :redface:

Unterm strich stimme ich Chris zu, punte pilter sind punte Pilter ;) Wenn man eine API und die Konzepte drauf hat, dann kann man auch alle anderen APIs.

Deswegen ist C# und Tao für den Anfang nicht das verkehrteste.