Hallo, ist es eigentlich möglich DirectX mit "C" (also kein C++) zu programmieren. Ich finde über Google über dieses Thema gar nichts (kommt nur Zeug über C++). Ich glaube einmal gelesen zu haben, dass DirectX ein C Interface haben soll. Und wenn ja, wie ist es im Vergleich zu C++? Umständlicher ? Vielen Dank!
Nimm OpenGL, dessen Interface ist in C, und außerdem geht das dann automatisch auf vielen anderen Betriebssystemen und Plattformen.
Also OpenGL werde ich auf jeden Fall benutzen, schon weil es Plattformunabhängig ist. Aber vielleicht will ich auch irgentwann DirectX miteinbauen. Eigentlich will ich das wissen, weil ich mich zwischen C und C++ entscheiden muss. Ich kann beide, aber C gefällt mir irgentwie besser :).
Strickwettbewerbgewinner schrieb: > Nimm OpenGL, dessen Interface ist in C, und außerdem geht das dann > automatisch auf vielen anderen Betriebssystemen und Plattformen. DirecX kann aber viel mehr als OpenGL, ist also mal wieder ein vergleich von Äpfel und Birnen. (Sound, Input, Netzwerk ) MS schreibt das es in C und C++ geht http://msdn.microsoft.com/en-us/library/ff476080%28v=vs.85%29
Ah danke. Das komische ist nur, dass auf der Seite steht: Recommended programming languages C/C++ aber Supported runtime environments Windows/C++ Ist das nicht widersprüchlich, oder irre ich mich da?
Es geht tatsächlich. Habe den C++ zu C portiert, allerdings macht das C Interface überhaupt keinen Spaß. Denn ist haargenauso aufgebaut und macht quasi OOP mit Funktionszeiger möglich, somit wird: swapChain->Release(); zu swapChain->lpVtbl->Release(swapChain); Oder ist das noch anders möglich? Jedenfalls werde ich mir das nicht antun und auf DirectX zunächst verzichten. Wäre mit C sowieso meine erste Wahl gewessen. Danke. mfg
Ich versteht die abneigung gegen C++ nicht. Willst du wirklich auf std::string, std::list usw verzichten? Andere vermissen schon auf den kleinen µC C++ und du willst Desktopanwendungen in C schreiben? Ist ja schon fast estaunlich das du es nicht in ASM machen willst.
Nein C++ ist wirklich nicht schlecht, aber ich finde diese Einfachheit von C einfach genial (und ich komme aus der C# Ecke ;) ). Wenn man nur ein bisschen Ahnung von ASM hat, kann man sagen was genau passiert. Komponenten wie std::string oder std::list habe ich selber geschrieben, sind natürlich nicht so komfortabel, aber sie tun ihre Arbeit. Das einzige was mir wirklich fehlt sind die Templates, sind zwar nicht unbedingt notwendig, da es der void* zeiger auch tut, allerdings nervt die Umwandlung in den benötigten Typ. Auf ASM stehe ich nicht so, viel zu aufwendig.
Christopher C. schrieb: > diese Einfachheit von C nutzt leider die Tastatur ganz schön ab... Es gibt Gründe dafür, dass nicht alles zu Füß transportiert wird ;-)
Christopher C. schrieb: > Nein C++ ist wirklich nicht schlecht, aber ich finde diese Einfachheit > von C einfach genial (und ich komme aus der C# Ecke ;) ). Es hindert dich allerdings auch nichts und niemand daran, dein C++ Programm so zu schreiben
1 | int main() |
2 | {
|
3 | int i; |
4 | struct MyStruct j; |
5 | |
6 | printf( .. |
7 | }
|
sprich: mit ganz wenigen Ausnahmen sind C Programme auch gültige C++
Programme (zumindest fehlt nicht viel und das was der C++ Compiler
anmeckern wird, ist auch in C sowieso meistens zweifelhaft). Jag dein C
Programm durch den C++ Compiler durch, korrigiere die Fehler, die dir
der anmeckert, und damit ist dein Teil erledigt.
Plus: Du kannst dann DirectX auf die komfortable Variante mit Objekten
ansprechen, so wie sich MS das dann auch gedacht hat.
> sind zwar nicht unbedingt notwendig, da es der void* zeiger auch tut
:-)
Du bist drauf und drann zu erkennen, wo dir eine Klassenhierarchie mit
Ableitungen und Polymorphismus unter die Arme greifen kann. Dann hast du
'Void Zeiger' die vom Compiler datentypmässig trotzdem überwacht werden
und dich selbst soweit einschränken, dass du nicht mit einem unbedachten
Cast alles zerstören kannst.
Christopher C. schrieb: > swapChain->lpVtbl->Release(swapChain); > > Oder ist das noch anders möglich? Füge vor allen includes ein #define COBJMACROS hinzu. Dann kannst du es auch so schreiben: InterfaceName_Release(swapChain); Aber Karl Heinz hat recht. Ein C++ Compiler ist der bessere C Compiler. Niemand zwingt dich die STL zu verwenden.
Meint ihr etwa ich soll C und C++ Code mischen oder denkt ihr einfach an die Vorteile einen C++ Compiler für C zu benutzen. Welche Vorteile hätte dies denn genau?
Christopher C. schrieb: > Meint ihr etwa ich soll C und C++ Code mischen So ungefähr. Der Punkt ist: C Code sieht in C++ auch nicht anders aus. Dein Projekt ist zwar ein C++ Projekt, du schreibst aber nach wie vor so, wie du es von C gewohnt bist. Kein Mensch sagt, dass du beim Umstieg auf einen C++ Compiler, sofort Klassen und Vererbung und dergleichen einsetzen musst. Du kannst den überwiegenden Anteil deiner C-Funktionen einfach in dein C++ Projekt einfügen und die werden genauso compiliert wie alles andere auch und wie es auch dein C Compiler tat. Ein paar Feinheiten gibt es, die in C++ anders sind als in C, aber das sagt dir dann schon der Compiler. > oder denkt ihr einfach an > die Vorteile einen C++ Compiler für C zu benutzen. Welche Vorteile hätte > dies denn genau? C++ Compiler sind pingeliger. Und: du kannst nach und nach in C++ und ganz speziell in die Welt der OOP reinwachsen. Und natürlich: Dein DirectX Problem hat sich soeben in Luft aufgelöst.
Guter Vorschlag. Ich lasse mir es mal durch den Kopf gehen. Vielen Dank nochmal ;). mfg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.