{"id":214,"date":"2010-02-27T23:27:49","date_gmt":"2010-02-27T22:27:49","guid":{"rendered":"http:\/\/blog.my-gate.net\/2010\/02\/directx-in-3d-part-i\/"},"modified":"2010-02-27T23:27:49","modified_gmt":"2010-02-27T22:27:49","slug":"directx-in-3d-part-i","status":"publish","type":"post","link":"https:\/\/duerrenberger.dev\/journal\/2010\/02\/27\/directx-in-3d-part-i\/","title":{"rendered":"DirectX in 3D \u2013 Part I"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 0px; display: inline; border-top: 0px; border-right: 0px\" title=\"DirectX 9\" border=\"0\" alt=\"DirectX 9\" align=\"left\" src=\"\/wp-content\/uploads\/2010\/03\/folder.png\" width=\"142\" height=\"142\" \/> Nein der Blogeintrag hat nichts mit real 3D zu tun, sondern nur mit dem normalen 2D-3D. \ud83d\ude42     <br \/>Ich habe nun die letzten Tag etwas Zeit investiert und mir DirectX 3D mal etwas n\u00e4her angeschaut. Eine gewisse Ahnung hatte ich ja schon durch meine Maturarbeit (<a href=\"http:\/\/blog.my-gate.net\/2009\/10\/maturarbeit-i-2\/\" target=\"_blank\">1<\/a>, <a href=\"http:\/\/blog.my-gate.net\/2009\/11\/maturarbeit-ii\/\" target=\"_blank\">2<\/a>, <a href=\"http:\/\/blog.my-gate.net\/2010\/02\/maturarbeit-iii\/\" target=\"_blank\">3<\/a>), jedoch eher in 2D und eigentlich nur mit Sprites. Nach dem ich nun mehr oder weniger per Zufall wieder auf die schon etwas \u00e4lteren <a href=\"http:\/\/www.microsoft.com\/germany\/msdn\/webcasts\/serien\/msdnwcs-0503-01.mspx\" target=\"_blank\">Webcasts<\/a> von Microsoft \u00fcber \u201cManaged DirectX\u201d gestossen bin, habe ich angefangen zu programmieren. Leider wurde ich dann mal schnell aufgehalten, da im Webcast C# und dotNET verwendet wird (war zwar logisch, da \u201cManaged DirectX\u201d dotNET ist).<\/p>\n<p> <!--more-->  <\/p>\n<p><font color=\"#c2c2c2\">Zu Beginn hatte ich einen ziemlichen unsch\u00f6nen Code und darum entschied ich mich das Ganze etwas mehr mit Klassen zu l\u00f6sen und erstellte dann eine CWindow- und eine CDirectX-Klasse. Leider hatte ich da auch schon das erste Problem und zwar wollte ich zuerst das ganze Fenster innerhalb einer Klasse erstellen und laufen lassen, mit der Callback-Funktion f\u00fcr die Windows-Nachrichten. Doch ich hab es dann nicht ganz hingebracht, die Callback-Funktion richtig an die WNDCLASSEX weiter zugeben und darum hab ich dann einen Teil in der WinMain-Funktion gelassen.      <br \/>Ich muss sagen der Aufbau gef\u00e4llt mir so wie er ist eigentlich noch besser als der von meiner Maturarbeit, jedoch ist das Projekt auch noch einfach gehalten.<\/font><\/p>\n<p>W\u00e4hrend ich nun versuch(t)e den genannten <a href=\"http:\/\/www.microsoft.com\/germany\/msdn\/webcasts\/serien\/msdnwcs-0503-01.mspx\" target=\"_blank\">Webcast<\/a> durch zu arbeiten und St\u00fcck f\u00fcr St\u00fcck nach C++ zu konvertieren, musste ich zwangsl\u00e4uft andere Ressourcen aufsuchen um genauere Informationen zu erlangen. Da bin ich auf drei verschiedene Tutorials gestossen, welche zusammen einen ziemlich guten Hilfe sind. Leider geht nur eines ein wenig tiefer in die Materie ein:<\/p>\n<blockquote>\n<p>&#8211; <a href=\"http:\/\/www.toymaker.info\/Games\/index.html\" target=\"_blank\">DirectX Programming &amp; Techniques Index<\/a>       <br \/>&#8211; <a href=\"http:\/\/www.drunkenhyena.com\/cgi-bin\/dx9.pl\" target=\"_blank\">Direct3D9 Tutorials in C++<\/a>       <br \/>&#8211; <a href=\"http:\/\/www.riemers.net\/eng\/Tutorials\/DirectX\/C++\/series1.php\" target=\"_blank\">DirectX Tutorial for C++<\/a><\/p>\n<\/blockquote>\n<p>Die einzelnen Tutorials sind alles ziemlich f\u00fcr eigen und man muss daher viel durch den Code selbst gehen und die wichtigsten Details zu erlangen. Beim Letzten ist noch anzumerken, dass die Navigation zu den n\u00e4chsten Seiten unten rechts ist.    <br \/>Nat\u00fcrlich darf man die <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ee417873%28VS.85%29.aspx\" target=\"_blank\">Mircosoft MSDN<\/a> nicht vergessen, obwohl die meistens nicht sehr hilfreich ist, h\u00f6chstens man m\u00f6chte die Argumente einer Funktion nachschlagen und auch dann ist die Bing-Suche keine wirkliche Hilfe und Google erledigt den Job dann oft besser.<\/p>\n<p>Nun noch bisschen zu dem Projekt das ich nun erfolgreich erstellt habe. Hier ein <strike>schlechtes<\/strike> kurzes Video:<\/p>\n<p align=\"left\"><object width=\"480\" height=\"385\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/B1Rg8bCezII&amp;hl=de_DE&amp;fs=1&amp;rel=0&amp;color1=0x006699&amp;color2=0x54abd6\"><\/param><param name=\"allowFullScreen\" value=\"true\"><\/param><param name=\"allowscriptaccess\" value=\"always\"><\/param><embed src=\"http:\/\/www.youtube.com\/v\/B1Rg8bCezII&amp;hl=de_DE&amp;fs=1&amp;rel=0&amp;color1=0x006699&amp;color2=0x54abd6\" type=\"application\/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"480\" height=\"385\"><\/embed><\/object><\/p>\n<p>Da dies \u201cPart I\u201d wird wohl sehr wahrscheinlich noch \u201cPart II\u201d kommen. Weil ich bin nun erst beim dritten Webcast angekommen und hab nun somit noch vieles vor mir: Meshes, Skeletal Animation, Anpassung der Grafikkarte, 2D-Grafiken mit DirectDraw, Graphic engines im Einsatz, D3DXFont, 3D Text, usw.<\/p>\n<p>Obwohl es viele Argumente gegen DirectX gibt und viele f\u00fcr OpenGL, so werde ich doch weiter an DirectX bleiben, denn ich denke es ist die meiste genutzte API und ziemlich m\u00e4chtig. Weiter werde ich dann wahrscheinlich irgendwann einmal vom puren DirectX wegkommen und eher eine Engine verwenden. F\u00fcr mich gibt DirectX einen guten Einblick in die 3D-Programmierung und hilft mir dann sp\u00e4ter sicher gewisse Aspekte einer Engine besser zu verstehen.<\/p>\n<p>Als Anmerkung m\u00f6chte ich hier noch den Link zum Quellcode zu den Webcasts bereitstellen, seit&#160; die URL in den Webcasts nicht mehr valid ist! Der Quellcode zu meinem kleinen Projekt geht vielleicht auch irgendwann einmal online\u2026 \ud83d\ude42<\/p>\n<blockquote>\n<p><a href=\"http:\/\/blogs.msdn.com\/frankfi\/archive\/2007\/03\/19\/directx-demos-oldies-but-goldies.aspx\" target=\"_blank\">Webcast Quellcode<\/a><\/p>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Nein der Blogeintrag hat nichts mit real 3D zu tun, sondern nur mit dem normalen 2D-3D. \ud83d\ude42 Ich habe nun die letzten Tag etwas Zeit investiert und mir DirectX 3D mal etwas n\u00e4her angeschaut. Eine gewisse Ahnung hatte ich ja schon durch meine Maturarbeit (1, 2, 3), jedoch eher in 2D und eigentlich nur mit [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,14],"tags":[26,68,99,292,375,396],"class_list":["post-214","post","type-post","status-publish","format-standard","hentry","category-pc","category-windows","tag-3d","tag-c","tag-directx","tag-programmierung","tag-tutorial","tag-webcast"],"_links":{"self":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts\/214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/comments?post=214"}],"version-history":[{"count":0,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/posts\/214\/revisions"}],"wp:attachment":[{"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/media?parent=214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/categories?post=214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/duerrenberger.dev\/journal\/wp-json\/wp\/v2\/tags?post=214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}