<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <link href="http://beast.blog.prog.hu/feeds/atom.xml" rel="self" title="[beast blog]" type="application/atom+xml" />
    <link href="http://beast.blog.prog.hu/"                        rel="alternate"    title="[beast blog]" type="text/html" />
    <link href="http://beast.blog.prog.hu/rss.php?version=2.0"     rel="alternate"    title="[beast blog]" type="application/rss+xml" />
    <title type="html">[beast blog]</title>
    <subtitle type="html">[prog gfx ogl]</subtitle>
    <icon>http://beast.blog.prog.hu/templates/default/img/s9y_banner_small.png</icon>
    <id>http://beast.blog.prog.hu/</id>
    <updated>2008-10-29T16:23:30Z</updated>
    <generator uri="http://www.s9y.org/" version="1.0.4">Serendipity 1.0.4 - http://www.s9y.org/</generator>
    <dc:language>hu</dc:language>

    <entry>
        <link href="http://beast.blog.prog.hu/archives/41-OpenGL-wrapper-Pt.2.html" rel="alternate" title="OpenGL wrapper Pt.2" />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-10-29T16:21:33Z</published>
        <updated>2008-10-29T16:23:30Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=41</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=41</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/41-guid.html</id>
        <title type="html">OpenGL wrapper Pt.2</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
Egy előző bejegyzésben említettem, hogy az OpenGL függvényeit bezártam egy osztályba, ez kapcsolódik egy (render) context-hez, az egész kiegészítve pedig egy olyasmi device-t ad, erős túlzással, mint a D3D interfésze. Persze, egyre több extension függvény is bekerül a wrapperbe, amiket a device létrejöttekor inicializálok (vagy mi), így abszolút semmi különbség nincs a glBindTexture és a glMultitexCoord(..., ...) hívása között (csak példa).<br /><br />Erre azért térek ki megint, mert a dolog odáig fajult, hogy a terv az, hogy egy direktívával kapcsolhatom fordításkor, hogy statikusan avagy dinamikusan akarom linkelni az OpenGL-t. Ez annyit tesz, hogy<br /><br />a.) a project library-k közé felveszem az opengl32.lib-et (MSVC), és belefordul a kódba ami kell<br /><br />b.) a program indulásakor, az említett device létrejöttekor betöltődik a OpenGL32.dll fájl, ahonnan ekkor kérem le a kívánt függvények belépési pontját.<br /><br />Ez utóbbi előnye, hogy enged valamennyi ellenőrzést a dolog felett. Tegyük fel, hogy nincs meg a dll, 'a' esetben a program nem indul el, míg 'b' esetben ezt lekezelhetem, pl. dobhatok egy log-ot róla. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /><br /><br />A másik előnye ennek az egésznek, hogy megismertem a dll-ek működését. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /><br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/40-Meresek...html" rel="alternate" title="Mérések.." />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-07-04T19:59:13Z</published>
        <updated>2008-07-06T14:53:48Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=40</wfw:comment>
    
        <slash:comments>7</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=40</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/40-guid.html</id>
        <title type="html">Mérések..</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>A probléma a következő:</p><p>Emberke megírja az SSE támogatást, remélvén, hogy majd de sokat gyorsít a vektor műveleteken, és az milyen jó.</p><p>Ugye ezt valós akció előtt le kell tesztelni. Mondjuk úgy, hogy:</p><p>QueryPerformanceCounter(&amp;start);<br />    <br />for(long i=0; i&lt;10000000; ++i)<br />{<br />    divSSE(&amp;v1.x, &amp;v2.x, &amp;v3.x);<br />}<br /><br />QueryPerformanceCounter(&amp;stop);</p><p>Az időt meg megkapjuk: (stop - start) / queryPerfFreq. Tiszta ügy. DE! Azt kell, lássuk, hogy az SSE csodaszer nem működik, sőt sokkal lassabb mint egy:</p><p align="baseline">void divNoSSE(float* a, float* b, float* c)<br />{<br />    c[0] = a[0] / b[0];<br />    c[1] = a[1] / b[1];<br />    c[2] = a[2] / b[2];<br />    c[3] = a[3] / b[3];<br />}</p><p><img src="http://beast.blog.prog.hu/uploads/sse.PNG" /></p><p>Az alsó kép a fontos most. Igazából a poént már le is lőttem, de azért megpróbálom megmagyarázni. No, valójában egy ilyen ciklussal nem tudjuk lemérni pontosan, hogy ez az egymillió vektor osztás mennyi időt is vesz igénybe. </p><p>for(long i=0; i&lt;10000000; ++i)<br /><br />
{<br /><br />
    divSSE(&amp;v1.x, &amp;v2.x, &amp;v3.x);<br /><br />
}</p><p>Ez a ciklus le fog nekünk futni tisztességesen egymilliószor, </p><p>for(long i=0; i&lt;10000000; ++i)<br />{<br />    divNoSSE(&amp;v1.x, &amp;v2.x, &amp;v3.x);<br />}</p><p>míg ez nem. A miértre a válasz csak annyi, hogy a fordító kioptimalizálja a kódot, és a 'divNoSSE' csak EGYSZER fog lefutni. Egyszer, azért mert látja, hogy hiába számolja ki, nem használjuk fel az eredményt. Ezért, ahogy a képen is látjuk, ez az idő nem igazán mérhető le.</p><p align="baseline">Viszont, ha az alap &quot;Maximize Speed (/O2)&quot;-t lecseréljük (a teszt idejére) egy &quot;Disable /Od&quot;-re, akkor már a második ciklus is le fog futni annyiszor, ahányszor szeretnénk.</p><p>Visual C++-ban ez a Project - Properties - C/C++ - Optimization tab első beállitása.</p><p></p><p></p><p>A tévedésre a jogot fenntartom. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/39-VisualWave.html" rel="alternate" title="VisualWave" />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-07-02T17:51:33Z</published>
        <updated>2008-07-02T18:01:50Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=39</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=39</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/39-guid.html</id>
        <title type="html">VisualWave</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<p>... ez egy saját programom, tool-om neve. A történet annyi, hogy mostanában elkezdtem foglalkozni a grafika mellett a hangokkal is, persze prog. szemszögből. A sima betöltöm és lejátszom helyett, én inkább real time akarom előállitani a különféle zajokat, esetleg zenéket. Igen, igen, demoscene.</p><p>Szóval jó lenne valami kis tool, ami megeszik egy lua fájlt, és meg is jeleniti nekem. Erre hivatott ez a tool-ocska. Egyelőre még elég sovány a tudása, de remélhetőleg változni fog. Szóval:</p><p>- lua fájl, ami a hullámok jellemzőit illeti (tehát csak reload és már látjuk is az eredményt)</p><p>- több hullámot is képes legyen megjeleníteni, színekkel megkülönböztetve</p><p>- különböző műveletek a hullámokkal</p><p>- hullám szerkesztése és export (bár ez annyira nem fontos, mivel ugye ez ugyan az mintha betöltök egy wav-ot)</p><p>Egyelőre ez a terv. Mellékelek egy képet is <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> :</p><img style="width: 388px; height: 284px;" src="http://beast.blog.prog.hu/uploads/viswave.PNG" /> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/38-Spam.html" rel="alternate" title="Spam" />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-06-30T21:11:43Z</published>
        <updated>2008-07-01T15:25:07Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=38</wfw:comment>
    
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=38</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/38-guid.html</id>
        <title type="html">Spam</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Egy időre letiltottam a kommenteket, no nem mintha annyi lett volna, csak ez a trackback-es spam teljesen kiidegelt.</p><p>Blogos társak nem szenvedtek ettől?</p><p></p><p>Itt a nyár, jött ez a kurva meleg, de már nem kell emiatt idegeskednem, áldom a légkondit! <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/laugh.png" alt=":-D" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/37-PSP.html" rel="alternate" title="PSP" />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-06-06T09:41:30Z</published>
        <updated>2008-06-06T09:51:09Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=37</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=37</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/37-guid.html</id>
        <title type="html">PSP</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<p>Nem olyan régen szereztem egy ilyen kis gépet (gyengébbek kedvéért [Sony] PlayStation Portable).</p><p>Kis FW frissités után (akinek van, az érti, miért is kellett ez a lépés <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" />), már futtattam is rajta az első psp-s programomat. (hát mit hittetek, játszani fogok rajta?) <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/laugh.png" alt=":-D" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p>Első lépésben (és ez volt a legmacerásabb is) be kellett lőni az egész környzetet, cygwin-estől, pspsdk-stól együtt. Utána már gyerekjáték az egész programirás rá. Amit megemlitnék, hogy pspsdk-t böngészve elég logikusnak tűnik az egész felépitése, és elég beszédes fügvénynevek vannak. Ami azért is fontos, mivel sima notepad++-ban kódolok, és azért ott nem ugrik elő az IntelliSense. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p /><p><br />
</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/36-OpenGL-wrapper.html" rel="alternate" title="OpenGL wrapper" />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-04-22T13:32:32Z</published>
        <updated>2008-04-22T13:55:03Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=36</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=36</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/36-guid.html</id>
        <title type="html">OpenGL wrapper</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<p>A napokban lettem kész az (alap) opengl wrapperemmel, ami lazán annyit jelent, hogy van egy osztályom, melynek minden opengl (1.1!) függvény tagfüggvénye. Ez most úgy néz ki, kis túlzással, mint a DX. Az engine render context osztályának van egy példánya ebből a wrapperből, s ezen keresztül hivogatom az ogl-es fv.-ket.</p><p>Na, kis példa, hogy miről is beszélek:<br />
<code></code></p><p><br />
	ptrCore-&gt;wfglColor3f(1.0f, 1.0f, 0.0f);<br />
	</p><p>ptrCore-&gt;wfglPointSize(5.0f);<br />
	</p><p>ptrCore-&gt;wfglPushMatrix();<br />
	</p><p>ptrCore-&gt;wfglRotatef(rot, 0.0f, 1.0f, 0.0f);<br />
	</p><p>ptrCore-&gt;wfglBegin(GL_TRIANGLES);<br />
	</p><p>ptrCore-&gt;wfglVertex3f(-2.0f, 0.0f, -2.0f);<br />
	</p><p>ptrCore-&gt;wfglVertex3f(2.0f, 0.0f, -2.0f);<br />
	</p><p>ptrCore-&gt;wfglVertex3f(2.0f, 0.0f, 2.0f);<br />
	</p><p>ptrCore-&gt;wfglEnd();<br />
	</p><p>ptrCore-&gt;wfglPopMatrix();<br />
</p><p>Ez igy miért is jó? Főleg, és emiatt irtam is meg, hogy nyomon tudjam követni az ogl hivásokat, magyarul, nem tudom minden honnan össze-vissza hivogatni a függvényeket. Ez pedig jó. Egyébként még azt is piszok egyszerű lekezelni, hogy egy-egy fv. hivás után keletkezett-e belső (glGetError, vagy valami ilyesmi a neve <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/laugh.png" alt=":-D" style="display: inline; vertical-align: bottom;" class="emoticon" />) hiba. Debug módban erre kapok egy MessageBox-ot, hogy ez, meg ez a gl hivás sikertelen volt.</p><p>Persze, ezzel a wrapperes megoldással arra is kényszeritem magam, hogy logikusabban tervezzem a felépitését az egész rendszernek, elvégre fontolóra kell venni, ki, mit, hogyan érhet el. Szerintem ez is jó. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p>Jah, igen, emlitettem, hogy ez &quot;vanilla&quot; opengl wrapper, ergo a kiterjesztéseket nem tartalmazza. Ezt is megoldottam :P, mégpedig úgy hogy az egész wrapper egy COGLWrapperExt osztályból származik, tehát már maga az OGLWrapper tartalmazza a kiterjesztéseket is (pl. glMultiTexCoordxx...). </p><p>Piszok sok gépelés minden függvényt (főleg az olyanokat mint a glVertexNX, ahol N=2-3-4, X=i, iv, s, sv, f, fv, d, dv, stb) leirni, de egyszer kell vele szivni. </p><p>Ha megleszek teljesen, akkor publikálni akarom az wgész wrapper osztályt, hátha másnak is jól jön majd.</p><p>Még annyit, hogy kikerült a jatekfejlesztes.hu-ra két cikkem (<a href="http://ilab.hu/jf/page.php?&id=265">1</a>, <a href="http://ilab.hu/jf/page.php?&id=266">2</a>), melyekben a windows ablak, és az opengl render context létrehozását boncolgatom, főleg kezdőket célozva meg.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/35-Alt,-F10.html" rel="alternate" title="Alt, F10" />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-02-14T19:00:50Z</published>
        <updated>2008-02-14T19:00:50Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=35</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=35</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/35-guid.html</id>
        <title type="html">Alt, F10</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Biztos ismeritek a jelenséget, mikor egy aktiv ablaknál megnyomjuk az Alt gombot: lényegében előjön egy menü, hogy restore, move, size... Az helyzet az, hogy az F10 is ilyen gomb.</p><p>Ha pl. egy 3d-s programot irunk, akkor elég zavaró tud lenni, hogy alt is, és f10 is foglalt, sőt bezavarhat rendesen (f10-re pl. aktiváljuk a menüt, de nem jelenik meg, render viszont megáll).</p><p>Hogy az ezek által kiváltott eseményeket kikerüljük, a wndproc-ban csak le kell kezelni három esemény, névlegesen: WM_SYSKEYDOWN, WM_SYSKEYUP és a WM_SYSCHAR-t. Nem kell semmi extra kódot irni (ha nem akarjuk kezelni), csak simán:</p><p>case WM_SYSKEYDOWN:<br />case WM_SYSKEYUP:<br />case WM_SYSCHAR:<br />    return 0;</p><p>Öröm és boldogság, nem zavar be az alt (meg az f10) többé! <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/34-Programoztam....html" rel="alternate" title="Programoztam..." />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2008-02-12T12:21:41Z</published>
        <updated>2008-02-12T16:26:40Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=34</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=34</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/34-guid.html</id>
        <title type="html">Programoztam...</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<p>Kicsit meglepő, mert mostanában nagyon nem ment...</p><p>Biztos sokan láttatok már olyan programot, aminek nem szokványos alakja, kinézete volt. Konkrétan a formájára gondolok. Itt van pl. a bsPlayer, vagy régebben a crackelt játékok mellett volt ilyen kis ablak, ki törte fel, vagy pár demo inditóképernyője.</p><p>Szerintem magamon kivül senki sem érti, mit is magyarázok. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p>if(érted &amp;&amp; kiváncsivagyahowtora) olvasstovább; else klikkazxre; <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p>Szóval, azt szeretném megmutatni, hogyan is lehet is pofás win ablakot létrehozni.</p><p>Gondolom, a CreateWindow(Ex)-ig mindenki eljutott már. Ha már van egy működő (egyelőre átlagos) ablakunk, akkor a következő lépésként létre kell hozzunk egy &quot;régiót&quot;, ami az ablak területét irja le.</p><p>HRGN ghRgn;</p><p>ghRgn = CreateRectRgn(0, 0, w, h);</p><p>paraméterként két koordinátát vár, x,y és x1,y1. A terület méretei.</p><p>Ezután betöltünk egy bmp képet (vagy ami akarunk), egy tömbben tárolva az rgb adatokat. Ezután nincs mit tenni, végigmegyünk a tömbbön, és ahol rgb a megfelelő értékű (értsd, ahol átlátszó a kép, ergo ha a fehér az átlátszó, akkor r = g = b = 0) ott a területünk is átlátszó:</p><p>HRGN temp = CreateRectRgn(x, y, x+1, y+1);</p><p>CombineRgn(ghRgn, ghRgn, temp, RGN_XOR);</p><p>DeleteObject(temp);</p><p>Ebben a CreateRectRgn-ben x és y ciklus számlálok, vagyis a képünk x, y paramétere. Kombinálva az eredeti (teljes) területtel végül megkapjuk a kivánt alakot:</p><p>(persze, ez a már a ciklus után van)</p><p>SetWindowRgn(ghWnd, ghRgn, true);</p><p>ghWnd az ablakunk érvényes kezelője!</p><p>A törlésnél ne feledkezzünk meg a régió törléséről sem</p><p>DeleteObject(ghRgn);</p><p>Ez a kód csak az alakot olvassa ki a bmp-ből, tehát nem fog a bmp megjelenni az ablakunkra húzva, arról magunk kell gondoskonunk (BitBlt pl.).</p><p>Ha nem képből akarunk extrém kinézeteket létrehozni, biztosit a winAPI pár függvényt, pl. kör alakú forma létrehozásához is (CreateXYRgn függvények).</p><p align="baseline">Az eredmény:</p><p align="center"><img src="http://beast.blog.prog.hu/uploads/rgnwin.PNG" /></p><p /><p /><br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/33-Matrix.html" rel="alternate" title="Matrix" />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-11-17T20:25:35Z</published>
        <updated>2007-11-21T13:56:38Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=33</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=33</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/33-guid.html</id>
        <title type="html">Matrix</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Ha még valaki nem tudná, annak adok egy tanácsot: soha, khm SOHA, ne akarjon forgatni mátrixokkal. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p>Kis engine-em kamera kezelője még valamikor a múlt század elején került implemetálásra, működött is alapfokon. Az utóbbi időben viszon sokszor bírálta felül az én utasításaimat (nem úgy működött, ahogy én akartam <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" />). Miért? Mert mátrixok segítségével állította elő modellnézeti mátrixot. Bizony, az a bizonyos gimbal lock. Eddig nem sokszor futottam bele ebbe a hibába, nem zavart annyira. De most nagyon. Le is cseréltem kvaterniósra (helyes igy magyarul vajon? quaternion - kvaternió?). A fájdalom megszűnk, boldog mindenki. Főleg a kamerám. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/laugh.png" alt=":-D" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p>Van itt még egy ilyen &quot;mindenkitudjacsakénnem&quot;: párszor előfordult, hogy win ablak létrehozásnál a RegisterClassEx sikeres, viszon a CreateWindow(Ex) már érvénytelen (hwnd == 0) hwnd-t ad vissza. A kód pedig jó. Már ott tartottam, hogy biztos a forditó a hülye. De nem. A történet ugyanis ott kezdődik, hogy a CreateWindow dob egy WM_CREATE üzenetet a kezelőnek. Ha ezt senki nem kezeli le, akkor jön a null hwnd. Szóval lényegtelen, hogy mi magunk, vagy a DefWindowProc kezeli-e le. Jó tudni.</p><p>Megint sikerült halálértelmeset produkálnom blog cimen...Ehh, ehh. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p></p><br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/32-meg-egy-bug....html" rel="alternate" title="még egy bug..." />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-10-25T01:04:50Z</published>
        <updated>2007-10-31T08:13:02Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=32</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=32</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/32-guid.html</id>
        <title type="html">még egy bug...</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>... de szerencsére nem saját &quot;gyártmány&quot;. Végülis, hogy kié, az most tök mindegy, már pár napja szivatott rendesen.</p><p>A lényeg, hogy a program Debug módban egyszer csak leáll itt (xutility.h):</p><p>    __CLR_OR_THIS_CALL ~_Iterator_base()<br />        {    // destroy the iterator<br />        _Lockit _Lock(_LOCK_DEBUG);<br />        _Orphan_me();<br />        }</p><p>Na szép. Google, s meg is van a megoldás, mely szerinte ez egy bug, tudnak róla, köszönik, majd javitják. Azért közöltek egy megoldást is, tehát:</p><p>#ifdef __DEBUG<br />#define _HAS_ITERATOR_DEBUGGING        1<br />#endif</p><p>Ahogy látom, ez meg is oldotta a problémát. Irány az ágy! <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/31-Memory-management....html" rel="alternate" title="Memory management..." />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-10-22T19:59:53Z</published>
        <updated>2007-10-22T19:59:53Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=31</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=31</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/31-guid.html</id>
        <title type="html">Memory management...</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><br />
Az elmúlt napokban lecseréltem a saját kis kezdetleges memory manager modulomat, egy komolyabbra. Konkrétan a Paul Nettle félére (PaulNettle.com-on megtalálható).</p><p>Viszont ekkor kezdődött a pokol. A Doom semmi ehhez képest. Első körben a project összes header fájlját (99 százalékban csak a header-be teszek include-ot, forrásfájlba csak a hozzá tartozó headert) át kellett szerkeszteni: standard headerek előre, mem manager header utána, s legvégül a saját headerek. Nagy nehezen sikerült úgy elrendezni az include-okat, hogy végre nem kaptam 500 forditási hibát egy fájlra.</p><p>Viszont ez semmi szarkodás, ahhoz képest, hogy mennyit segitett, vagy 190 memory leak maradt a program után. :S</p><p>Nem akarom elkiabálni, de most úgy tűnik, szinte egy bitnyi (hehh, van ilyen szó?:D) fel nem szabaditott memóriát nem hagy a program maga után.</p><p>Ha már itt tartunk, szeretném megemliteni, hogy: A*Z*T*A*B*Ü*D*Ö*S K*U*R*V*A*E*G*E*T a 0xfeeefeee-nek! Pusztuljon! <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/laugh.png" alt=":-D" style="display: inline; vertical-align: bottom;" class="emoticon" /></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/30-fejlesztesek....html" rel="alternate" title="fejlesztések..." />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-10-02T15:18:49Z</published>
        <updated>2007-10-05T15:53:59Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=30</wfw:comment>
    
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=30</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/30-guid.html</id>
        <title type="html">fejlesztések...</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>A cim a kis enginemre utal, ugyanis az elmúlt hetekben kapott pár újitást.</p><p>Először is végre implementáltam a pak fájl kezelést. Ha valakinek magyarázni kell, mi is ez, az biztos még nem játszott Doom-mal. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> Szóval, mikor több adatfájlt (textúra, modellek, hangok) egy nagyba csomagolunk.  Olyasmi mint a zip. Gondolkodtam is, hogy kapjon-e valami tömöritést is, de mivel &quot;on the fly&quot; töltöm be az adatokat, nem lenne szerencsés még a kitömöritéssel is bajlódni, plusz idő. Elvetve. A pak fájl struktúrája viszonylag egyszerű:</p><p>- fájl header</p><p>    - egy hat bájtos ASCII sztring, azaz a szokásos fájl azonosító ('BSTPAK' - (milyen ötletes, heh?:D))</p><p>    - egy egész tipus, ami a fájlok számát jelöli a csomagban.</p><p>- fájl adatok</p><p>- s a fájl végére egy lista, ami a fájlban tárolt adatokról ad bővebb infót:</p><p>    - fájl neve, ez a név alapján hivatkozhatunk rá (pl. 'walltexture.tga')</p><p>    - egész szám, fájl offset (franc tudja, van-e rá magyar kifejezés :S), vagyis hol KEZDŐDIK a fájl tartalma         a csomagon belül.</p><p>    - s végül a fájl mérete.</p><p>A fájl mérete végülis elhagyható, mert a média lerió lista olyan sorrendben van, amilyenben a fájlok a csomagban, vagyis könnyen ki lehetne számolni (következő offset - aktuális offset). Egyelőre hagyom igy. Azt pedig, hogy hol kezdődnek a végén a leirók, pedig úgy kapom, meg, hogy (sizeof(leiró_struktúra) * fájlok_száma_a_headerből), s a fájl végétől ennyit hajtok vissza.</p><p>(Minap újra elővettem a Doom-ot (nem, nem a 3-ast), s láttam, hogy Carmack is igy oldotta meg a WAD fájlokat: header előre, adatok középre, leirók legvégére. Nem meglepő.)</p><p>Ez igy nagyon jól hangzik (legalábbis nekem <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/laugh.png" alt=":-D" style="display: inline; vertical-align: bottom;" class="emoticon" />), de ez igy még magában elég kevés. Ezért is jött létre még egy osztály, ami annyit tesz, hogy fájlokat keres. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> Van egy RequestFile nevű függvénye, melynek paramétere a fájl neve. Egyelőre minden elérési út nélkül kell megani neki, tehát pl. 'walltexture.tga', a visszatérési értéke pedig egy sztring, a fájl teljes útvonala az exe-hez viszonyitva. Nem tudom, hogy ez jó megoldás-e, de eddig nem ütköztem olyan dologba, ami kétsége vonná... Szóval, ez az osztály, ha fájl kérésnél nem találja a kért fájl, akkor átnézi a pak fájlokat (már ha vannak, ugye), s benne van a kért fájl, kicsomagolja, s visszaadja az elérési útvonalát.</p><p>S van még egy fontos osztály: ResourceManager. Alapból 5 féle resource van: textúra (vagy kép), mesh (modellek), material (anyagleiró xml-ek), sounds (hangok), és végül music (vagyis a zene fájlok). Ez a resource manager kezeli a fájlkéréseket, valamint törli az ideiglenes fájlokat. Ideiglenes fájlok azok, amelyek a pak fájlból lettek kicsomagolva.</p><p>Egyelőre a megoldás hátrány, hogy ha van kettő (vagy több) azonos nevű fájl (külön mappában persze), akkor lehet gubanc. De majd vigyázok. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/29-Hozzaertok.html" rel="alternate" title="Hozzáértők" />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-08-25T10:19:44Z</published>
        <updated>2007-08-25T10:19:44Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=29</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=29</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/29-guid.html</id>
        <title type="html">Hozzáértők</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Olvasgatva különböző fórumokat, azon gondolkodám, hogy vajon akik adják a &quot;hozzáértőt&quot;, azok vajon tényleg többet látnak egy film tréleréből, mint mi, földi halandók, egyszerű filmrajongók?</p><p>Vagy csak azért lesznek ők profi filmkritikusok, mert széllel szembe pisálnak, direkt lefikáznak mindent?</p><p>Egyébként most nem prog.hu-ra gondoltam, nem is programozásra, hanem a szórakoztató média különböző területeire (zene, film, játékok, ésatöbbi)...<br /><br />Rejtély.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/28-gl_texture_rectangle.html" rel="alternate" title="gl_texture_rectangle" />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-07-31T18:52:04Z</published>
        <updated>2007-08-02T22:28:37Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=28</wfw:comment>
    
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=28</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/28-guid.html</id>
        <title type="html">gl_texture_rectangle</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Tegnap/ma bekerült ez a bizonyos npots (non power of two size - nem kettő hatvány méretű) textúra támogatás a render engine-embe. Viszont akkor néztem nagyot mikor dokumentációjában megláttam, hogy az ilyen tipusú textúrák paraméterezése nem 0..1 tartományban történik, hanem 0..width/height, vagyis 0-tól a textúra valós méretéig. Hirtelen elgondolkodtam. Vajon ebben az esetben egy opengl-lel most ismerkedő user, hogyan oldaná meg a dolgot? Alapból úgy UV-zné a modellt, hogy a texcoord-ok ebben a tartományban legyenek? Vagy végigfutna és beszorozgatná a textúra koordinátákat renderelés előtt? Hirtelen nekem is ez az utóbbi jotott eszembe, de aztán az is, hogy vertex buffer-nél ez alapból ki van lőve. Gondolkodjunk. Aha, glMatrixMode(GL_TEXTURE), glScalef(width, height, 0). Tádá! S már működik is. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://beast.blog.prog.hu/archives/27-jra-itthon.html" rel="alternate" title="Újra itthon" />
        <author>
            <name>beast</name>
            <email>nospam@example.com</email>
        </author>
    
        <published>2007-07-24T08:11:31Z</published>
        <updated>2007-07-24T20:22:11Z</updated>
        <wfw:comment>http://beast.blog.prog.hu/wfwcomment.php?cid=27</wfw:comment>
    
        <slash:comments>3</slash:comments>
        <wfw:commentRss>http://beast.blog.prog.hu/rss.php?version=atom1.0&amp;type=comments&amp;cid=27</wfw:commentRss>
    
    
        <id>http://beast.blog.prog.hu/archives/27-guid.html</id>
        <title type="html">Újra itthon</title>
        <content type="xhtml" xml:base="http://beast.blog.prog.hu/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <br />
<p>Újra itthon, ugyanis tegnap ért véget a nyaralás. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /> Volt tengerpart, sósviz, jó csajok meg minden egyéb.</p><p>A legmeglepőbb számomra az volt, hogy egy pár éve még kis semmi tengerparti &quot;város&quot;, mára Montenegro (Petrovacról beszélünk) egyik legdárgább helyének mondható. Pár négyzetméteres telkeket milliós nagyságú (euró) összegekért vesznek meg (ahogy mesélték, orosz &quot;businessmanek&quot;). Bárcsak lenne egy kis telkem ott. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/laugh.png" alt=":-D" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p>Próbáltam annyira nem lebarnulni, hogy valami afrikai turástának nézzenek itthon, de azért ez nem olyan könnyű a strandon. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p>Unalmas perceimben a telefon jegyzetfüzetébe hello world, c/c++ forráskódokat irkálatam. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/laugh.png" alt=":-D" style="display: inline; vertical-align: bottom;" class="emoticon" /></p><p>Egyébként, ami még elég durva volt a nyaralásban, az az oda vezető út. Innen tőlünk (Szerbia legészakibb kis faluja:D (határmenti falu/Horgos)) le a tengerig, egy irányba kb. 700-750km között van. A gáz hogy ebből a fele csak a sima egyenes út, mikor már lejjebbleértünk, kezdődtek a hegyek, jöttek a kanyargós utak. Jobbról szikla, balról vagy 200m szakadék. :S S felváltva. Nem kis teljesitmény ott lehajtani kocsival. </p><p>Egyébként meg micsoda dolog, hogy ilyen hőségbe kell hazajönnöm?:) Lent a tengerparton nem volt ilyen kurva meleg. Borzasztó. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/smile.png" alt=":-)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p>Indulás előtt (kb. 2 hete) elkezdtem az engine-emhez irni a pak fájl támogatást, fájl IO meg is lett belőle (vagyis a fájl IO támogatás már régen benne van/volt az engine-emben), de most valahogy nincs kedvem kódolni. <img src="http://beast.blog.prog.hu/templates/default/img/emoticons/sad.png" alt=":-(" style="display: inline; vertical-align: bottom;" class="emoticon" /> Egyébként ezen gondolkodom, hogy vannak ezek a pak fájlok. Eddig ok, vannak mondjuk bináris (pl. textúrák, modellek) és sima text (script-ek, xml-ek) fájljaim. Ha ezeket egy nagy fájlként össze akarom fűzni, akkor minden fájlt beolvasok text-ként, és text-ként is irom ki őket? Ez nem világos. Asszem lépek is google barátomhoz... 
            </div>
        </content>
        
    </entry>

</feed>
