{"id":135,"date":"2009-06-18T14:46:25","date_gmt":"2009-06-18T21:46:25","guid":{"rendered":"http:\/\/www.shultays.com\/blog\/?p=135"},"modified":"2009-06-18T14:46:25","modified_gmt":"2009-06-18T21:46:25","slug":"openglden-directxe-gecis-donemi","status":"publish","type":"post","link":"https:\/\/enginmercan.com\/?p=135","title":{"rendered":"Opengl&#8217;den Directx&#8217;e ge\u00e7i\u015f d\u00f6nemi"},"content":{"rendered":"<p>Ger\u00e7ekten sanc\u0131l\u0131 bir d\u00f6nemmi\u015f. Hen\u00fcz directx e yeni ba\u015flad\u0131m ve opengl den ne kadar \u00e7ok farkl\u0131 oldu\u011fu g\u00f6r\u00fclebiliyor.<\/p>\n<p>En ba\u015fta glut tarz\u0131 bir \u00e7ok i\u015fi basitle\u015ftiren bir aray\u00fcz\u00fcn (bir ad\u0131 vard\u0131 ama unuttum \u015fimdi) yoklu\u011fu hissettiriyor. Bir pencere a\u00e7abilmek ve bunu opengl e ba\u011flamak glut ile haz\u0131r fonksiyonlar ile yap\u0131l\u0131rken directx de her \u015feyi biz yap\u0131yoruz. Tabi bu \u00e7ok daha fazla esneklik sa\u011fl\u0131yor ve daha iyi \u00f6\u011frenmemize yar\u0131yor ama en basit uygulamalar i\u00e7in bile fazladan ~200 sat\u0131r kod anlam\u0131na geliyor. \u00c7o\u011funlukla copy paste olsa da okunabilirli\u011fi feci oranda d\u00fc\u015f\u00fcr\u00fcyor. Asl\u0131nda bir ara bunlar\u0131 basitle\u015ftirecek bir k\u00fct\u00fcphane yazmak geliyor i\u00e7imden ama ondan \u00f6nce \u00f6\u011frenecek \u00e7ok \u015fey var.<\/p>\n<p>Bir di\u011fer s\u0131k\u0131nt\u0131 da opengl de tek bir fonksiyonla yapt\u0131\u011f\u0131m\u0131z \u015feylerin directx de \u00e7ok uzun s\u00fcrmesi. Mesela glRotatef yerine \u015f\u00f6yle bir \u015fey diyoruz.<\/p>\n<pre>[code language='c++']\n\nD3DXMATRIX matRotateY;\nD3DXMatrixRotationY(&amp;amp;matRotateY, index);\nd3ddev-&amp;gt;SetTransform(D3DTS_WORLD, &amp;amp;(matRotateY));\n[\/code]<\/pre>\n<p>Bizleri d\u00fc\u015f\u00fcnen birisi bunun i\u00e7in haz\u0131r bir k\u00fct\u00fcphane yazm\u0131\u015f, \u00e7ok ho\u015f duruyor ama hen\u00fcz kullanma f\u0131rsat\u0131m olmad\u0131.<\/p>\n<p><a href=\"http:\/\/www.adamdawes.com\/programming\/windows\/directx_matrixtransforms.html\">http:\/\/www.adamdawes.com\/programming\/windows\/directx_matrixtransforms.html<\/a><\/p>\n<p>Bir di\u011fer zorluk da bana sanki directx i\u00e7in daha az kaynak var gibi geliyor. opengl de herhangibir konuda bir y\u0131\u011f\u0131n \u00f6rnek bulunabilirken directx&#8217;de bu durum daha s\u0131k\u0131nt\u0131l\u0131 gibi.<\/p>\n<p>Directx te \u015fu an en \u00e7ok ilgilendi\u011fim konu shader lar. Basit\u00e7e tan\u0131mlamak gerekirse shader dedi\u011fimiz GPU \u00fczerinde \u00e7al\u0131\u015fabilecek programc\u0131n\u0131n yazd\u0131\u011f\u0131 uygulamalar. 3 \u00e7e\u015fidi var: vertex shader, pixel shader ve geometry shader.<\/p>\n<p>c++ dan farkl\u0131 bir dil HLSL: ile yaz\u0131l\u0131yor. A\u00e7\u0131l\u0131m\u0131 High Level Shading Language ama g\u00f6z\u00fcme o kadar da &#8216;high&#8217; gelmedi. Ama bir di\u011fer se\u00e7enek olarak assembly ile de yaz\u0131labiliyor ki buna g\u00f6re tabi \u00e7ok daha y\u00fcksek seviye kal\u0131yor tabi =)<\/p>\n<p>\u015eurada shader lar i\u00e7in basit bir ka\u00e7 \u00f6rnek var (ayr\u0131ca oyunu da oynay\u0131n muhte\u015fem yapm\u0131\u015f adam)<\/p>\n<p>http:\/\/www.facewound.com\/tutorials\/shader1\/<\/p>\n<p>\u00d6\u011frendik\u00e7e daha ayr\u0131nt\u0131l\u0131 bilgiler vermeye \u00e7al\u0131\u015faca\u011f\u0131m, kendime iyice kavramak i\u00e7in bir yaz s\u00fcre vard\u0131m, fazla bir say\u0131l\u0131r ama yaz\u0131n s\u0131ca\u011f\u0131nda pek heves kalm\u0131yor =)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ger\u00e7ekten sanc\u0131l\u0131 bir d\u00f6nemmi\u015f. Hen\u00fcz directx e yeni ba\u015flad\u0131m ve opengl den ne kadar \u00e7ok farkl\u0131 oldu\u011fu g\u00f6r\u00fclebiliyor. En ba\u015fta glut tarz\u0131 bir \u00e7ok i\u015fi basitle\u015ftiren bir aray\u00fcz\u00fcn (bir ad\u0131 vard\u0131 ama unuttum \u015fimdi) yoklu\u011fu hissettiriyor. Bir pencere a\u00e7abilmek ve bunu opengl e ba\u011flamak glut ile haz\u0131r fonksiyonlar ile yap\u0131l\u0131rken directx de her \u015feyi biz [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,15,12,14],"tags":[],"class_list":["post-135","post","type-post","status-publish","format-standard","hentry","category-cc","category-directx","category-grafik","category-opengl"],"_links":{"self":[{"href":"https:\/\/enginmercan.com\/index.php?rest_route=\/wp\/v2\/posts\/135","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enginmercan.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/enginmercan.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/enginmercan.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/enginmercan.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=135"}],"version-history":[{"count":0,"href":"https:\/\/enginmercan.com\/index.php?rest_route=\/wp\/v2\/posts\/135\/revisions"}],"wp:attachment":[{"href":"https:\/\/enginmercan.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enginmercan.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enginmercan.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}