<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Kicking Dragon (dot) com</title>
	<link>http://kickingdragon.com</link>
	<description>geekery is afoot</description>
	<pubDate>Thu, 20 Mar 2008 06:25:01 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<item>
		<title>TurokDevEddie &#038; Online Communities</title>
		<link>http://kickingdragon.com/2008/03/06/turokdeveddie-online-communities/</link>
		<comments>http://kickingdragon.com/2008/03/06/turokdeveddie-online-communities/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 02:52:32 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[]]></category>

		<category><![CDATA[constructive feedback]]></category>

		<category><![CDATA[dlc]]></category>

		<category><![CDATA[fps]]></category>

		<category><![CDATA[game developer]]></category>

		<category><![CDATA[game with dev]]></category>

		<category><![CDATA[microsoft]]></category>

		<category><![CDATA[playing games]]></category>

		<category><![CDATA[turok]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://kickingdragon.com/2008/03/06/turokdeveddie-online-communities/</guid>
		<description><![CDATA[Two weeks ago, Microsoft organized an online event they called &#8220;Game With Dev&#8221; as we&#8217;ve officially launched Turok.  I&#8217;ve never heard of this before (although apparently it&#8217;s not a new thing), but the idea is was sheer genius.
Aside from getting my ass handed to me by the community (hey, I was busy coding during [...]]]></description>
			<content:encoded><![CDATA[<p>Two weeks ago, Microsoft organized an online event they called &#8220;<a href="http://www.xbox.com/en-US/community/calendar/gamewithdevelopers/2008/0222-turok.htm">Game With Dev</a>&#8221; as we&#8217;ve officially launched <a href="http://en.wikipedia.org/wiki/Turok_%28video_game%29">Turok</a>.  I&#8217;ve never heard of this before (although apparently it&#8217;s not a new thing), but the idea is was sheer genius.</p>
<p>Aside from getting my ass handed to me by the community (hey, I was busy coding during production; not goofing around and playing games, *cough* <a href="http://bryanlenzin.com/">Lenzin</a>! *cough* <img src='http://kickingdragon.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ), it was great to see people trying to reach through to the team: before I started playing I started receiving friend invites, as well as messages detailing &#8220;what-would-be-soooo-cool-as-DLC&#8221;.  It was really good to see people enjoying the game, and feeding back (particularly since forums seem to be more of a form of cathartic venting then actual constructive feedback).</p>
<p>I wouldn&#8217;t be surprised to see this sort of event with an MMO or some such, but it never struck me as something possible, or even enjoyable, for your average FPS gamer.  I&#8217;m glad that Microsoft is heading these types of events, it definitely makes life a lot more enjoyable as a game developer.</p>
]]></content:encoded>
			<wfw:commentRss>http://kickingdragon.com/2008/03/06/turokdeveddie-online-communities/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Conferences</title>
		<link>http://kickingdragon.com/2008/01/31/conferences/</link>
		<comments>http://kickingdragon.com/2008/01/31/conferences/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 00:42:20 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[conferences]]></category>

		<category><![CDATA[gaming]]></category>

		<category><![CDATA[seattle]]></category>

		<category><![CDATA[vancouver]]></category>

	<!-- AutoMeta Start -->
	<category>finds</category>
	<category>lived</category>
	<category>nearby</category>
	<category>leave</category>
	<category>2001</category>
	<category>keeping</category>
	<category>conferences</category>
	<category>check</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://kickingdragon.com/2008/01/31/conferences/</guid>
		<description><![CDATA[I&#8217;ve always wanted to go to conferences, and aside from E3 back in 2001, I haven&#8217;t really lived up to it.
I&#8217;m keeping a list of nearby conferences to Vancouver/Seattle here.  Check it out, and leave any comments you have on this post.
Hopefully someone else finds this useful.  If not, it&#8217;s useful for me! 
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always wanted to go to conferences, and aside from E3 back in 2001, I haven&#8217;t really lived up to it.</p>
<p>I&#8217;m keeping a list of nearby conferences to Vancouver/Seattle <a href="http://kickingdragon.com/upcoming-conferences/" title="Conferences">here</a>.  Check it out, and leave any comments you have on this post.</p>
<p>Hopefully someone else finds this useful.  If not, it&#8217;s useful for me! <img src='http://kickingdragon.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://kickingdragon.com/2008/01/31/conferences/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The Backup System That Will Never Be</title>
		<link>http://kickingdragon.com/2008/01/22/the-backup-system-that-will-never-be/</link>
		<comments>http://kickingdragon.com/2008/01/22/the-backup-system-that-will-never-be/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 02:04:05 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[backups]]></category>

		<category><![CDATA[differentials]]></category>

		<category><![CDATA[repositories]]></category>

		<category><![CDATA[rsnapshot]]></category>

		<category><![CDATA[unix]]></category>

		<category><![CDATA[unix tools]]></category>

	<!-- AutoMeta Start -->
	<category>backup</category>
	<category>reading</category>
	<category>differentials</category>
	<category>solution</category>
	<category>subject</category>
	<category>ended</category>
	<category>understood</category>
	<category>base</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://kickingdragon.com/2008/01/22/the-backup-system-that-will-never-be/</guid>
		<description><![CDATA[After my backup fiasco a couple weeks ago, I figured I should investigate backups, and see what exactly it is in a backup solution that I am looking for.
In reading up on the subject, I understood probably the best way to go about it is to do a base line full backup, and then a [...]]]></description>
			<content:encoded><![CDATA[<p>After my <a href="http://kickingdragon.com/2008/01/09/poof/" title="poof">backup fiasco</a> a couple weeks ago, I figured I should investigate backups, and see what exactly it is in a backup solution that I am looking for.</p>
<p>In reading up on <a href="http://gentoo-wiki.com/HOWTO_Backup" title="back that tar up" target="_blank">the subject, </a>I understood probably the best way to go about it is to do a base line full backup, and then a set of <a href="http://en.wikipedia.org/wiki/Differential_backup" title="what's the diff?" target="_blank">differentials</a>.  I ended up writing a neat little system in strictly bash and base UNIX tools, and it was actually getting pretty useful until I spotted <a href="http://www.rsnapshot.org/" title="awww, snap" target="_blank">rsnapshot</a>.</p>
<p>Man, that&#8217;s one neat little package, and it&#8217;s super simple, easy and straight forward to set up.</p>
<p>In the end, I only had to write one &#8216;custom&#8217; script, which was to backup my svn repositories, and it was off to the races.</p>
<p>If anyone&#8217;s interested in the source to my bash-based engine, let me know.  It definitely taught me a lot about bash scripting!</p>
]]></content:encoded>
			<wfw:commentRss>http://kickingdragon.com/2008/01/22/the-backup-system-that-will-never-be/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Resurrecting</title>
		<link>http://kickingdragon.com/2008/01/14/ressurecting/</link>
		<comments>http://kickingdragon.com/2008/01/14/ressurecting/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 08:37:14 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[resurrected post]]></category>

	<!-- AutoMeta Start -->
	<category>posts</category>
	<category>internet</category>
	<category>ordered</category>
	<category>previous</category>
	<category>caches</category>
	<category>recover</category>
	<category>begun</category>
	<category>people</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://kickingdragon.com/2008/01/14/ressurecting/</guid>
		<description><![CDATA[As my previous post has stated, my posts have all but been wiped out.
That said, through various Internet caches, I&#8217;ve begun to recover my old posts, ordered by the ones it seems people are requesting most.
Let me know if you got here and couldn&#8217;t find what you&#8217;re looking for!
]]></description>
			<content:encoded><![CDATA[<p>As my previous post has stated, my posts have all but been wiped out.</p>
<p>That said, through various Internet caches, I&#8217;ve begun to recover my old posts, ordered by the ones it seems people are requesting most.</p>
<p>Let me know if you got here and couldn&#8217;t find what you&#8217;re looking for!</p>
]]></content:encoded>
			<wfw:commentRss>http://kickingdragon.com/2008/01/14/ressurecting/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Poof.</title>
		<link>http://kickingdragon.com/2008/01/09/poof/</link>
		<comments>http://kickingdragon.com/2008/01/09/poof/#comments</comments>
		<pubDate>Thu, 10 Jan 2008 00:06:04 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[backups]]></category>

		<category><![CDATA[hard drive]]></category>

		<category><![CDATA[partition]]></category>

		<category><![CDATA[server]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://kickingdragon.com/?p=3</guid>
		<description><![CDATA[A failed server partition resize has blown away all my blog postings.  Dammit!  I thought I&#8217;d backed up everything, but I suppose it&#8217;s fathomable I might miss something that late at night.
Regardless,  the server is running better than ever, but I think my next project I blog about will be a set of backup scripts&#8230;. [...]]]></description>
			<content:encoded><![CDATA[<p>A failed server partition resize has blown away all my blog postings.  Dammit!  I thought I&#8217;d backed up everything, but I suppose it&#8217;s fathomable I might miss something that late at night.</p>
<p>Regardless,  the server is running better than ever, but I think my next project I blog about will be a set of backup scripts&#8230;. <img src='http://kickingdragon.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>See ya in a bit.</p>
]]></content:encoded>
			<wfw:commentRss>http://kickingdragon.com/2008/01/09/poof/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rethinking Hungarian Notation, and Joel on Software</title>
		<link>http://kickingdragon.com/2006/07/27/rethinking-my-standpoint-on-hungarian-notation-and-joel-on-software/</link>
		<comments>http://kickingdragon.com/2006/07/27/rethinking-my-standpoint-on-hungarian-notation-and-joel-on-software/#comments</comments>
		<pubDate>Thu, 27 Jul 2006 17:06:02 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[]]></category>

		<category><![CDATA[domain level]]></category>

		<category><![CDATA[hungarian notation]]></category>

		<category><![CDATA[joel on software]]></category>

		<category><![CDATA[resurrected post]]></category>

	<!-- AutoMeta Start -->
	<category>hungarian</category>
	<category>domain</category>
	<category>notation</category>
	<category>type</category>
	<category>variable</category>
	<category>wrong</category>
	<category>specific</category>
	<category>joel</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://kickingdragon.com/2006/07/27/rethinking-hungarian-notation-and-joel-on-software/</guid>
		<description><![CDATA[Hungarian notation has always sat wrong with me.  So has some of Joel on Software’s views in the past.  I’m currently revisiting both opinions.
Firstly, Hungarian notation. For those of you not in the know, Hungarian notation is a coding convention that’s been around for a long time. It gets a lot of flak [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Hungarian_notation">Hungarian notation</a> has always sat wrong with me.  So has some of <a href="http://www.joelonsoftware.com/">Joel on Software’s</a> views in the past.  I’m currently revisiting both opinions.</p>
<p>Firstly, <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs600/html/HungaNotat.asp">Hungarian notation</a>. For those of you not in the know, Hungarian notation is a coding convention that’s been around for a long time. It gets a lot of flak - and in my opinion, usually quite rightly.</p>
<p>You see, the idea in the Windows headers, was to encode the variable type into the variable itself, to great detail. For example, in windows, you’ll often see something like this:</p>
<p class="hl-surround">&nbsp;</p>
<ol class="hl-main ln-show" title="Double click to hide line number." ondblclick="linenumber(this)">
<li class="hl-firstline"><span class="identifier3">// Function passing in a variable that&#8217;s a long pointer to a zero-terminated string</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier6">MyFunction</span><span class="identifier2">(</span><span class="identifier6">lpszBar</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
</ol>
<p>This, in my opinion, is <strong>wrong</strong>. C++ is already a strongly typed language, so you’ll get a compiler error if you pass in an item of the wrong type, so of what benefit is it to store the variable type in the name?</p>
<p>I always assumed that this was the “only” type of Hungarian notation, and I spurned the idea on the whole because of it.</p>
<p>Reading a post on Joel on Software’s website with great skepticism, I actually ended up changing my mind.</p>
<p>Joel brought to my attention that there’s actually two ‘types’ of Hungarian notation. One of which is called “System Hungarian”, and “Application Hungarian”. The difference is that the former encodes the <em>data type</em> into the variable, whereas the latter encodes the <strong>domain-level usage</strong> into the variable.</p>
<p>I won’t describe the difference between the two, as I think both <a href="http://www.joelonsoftware.com/articles/Wrong.html">Joel’s article</a> and <a href="http://en.wikipedia.org/wiki/Hungarian_notation">WikiPedia’s</a> do a fantastic job bringing both to light (Joel’s is a good read for the skeptic who wants a narrative to follow, WikiPedia’s is a good reference for those pressed for time). I will however talk about what brainstorm this set off in my head.</p>
<p>I now think that Application Hungarian is a <em>good</em> thing, but the difference I outlined above is huge:</p>
<p><strong>Systems Hungarian is easier to define, because it’s domain agnostic.  Application Hungarian is domain-specific.</strong></p>
<p>Take for example Joel’s example of needing to Encode() strings before sending them to a webpage. That’s a domain-specific example. Building a game in C++ doesn’t have the same requirement, so using his ’s’ and ‘us’ prefix doesn’t make sense.</p>
<p>It might even change from application-to-application, depending on what happens. This means you can’t have a blanket statement like “Always prefix [insert-domain-specific-kind-of-type-here] with [prefix]” between projects, unless they have a similar domain, and set of constraints.</p>
<p>I’m trying to think of places where this matters in code. I already do a modified form of “Hungarian” (prefixes such as: ‘m_’ for member variables, ‘b’ for boolean values, ‘p’ for pointers and ‘k’ for constants), but this is project-agnostic (perhaps I’ll call it Eddie Systems Hungarian <img src="http://www.kickingdragon.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> ). I have yet to see a need for integrating domain-specific/application-specific Hungarian in the games I program, but at least this gives me pause to think about usages for it. If anybody thinks of any, please let me know.</p>
]]></content:encoded>
			<wfw:commentRss>http://kickingdragon.com/2006/07/27/rethinking-my-standpoint-on-hungarian-notation-and-joel-on-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OpenGL vertex buffer objects tutorial</title>
		<link>http://kickingdragon.com/2006/07/25/opengl-vertex-buffer-objects-tutorial/</link>
		<comments>http://kickingdragon.com/2006/07/25/opengl-vertex-buffer-objects-tutorial/#comments</comments>
		<pubDate>Tue, 25 Jul 2006 08:44:57 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[]]></category>

		<category><![CDATA[gaming]]></category>

		<category><![CDATA[opengl]]></category>

		<category><![CDATA[simple tutorial]]></category>

		<category><![CDATA[tutorial]]></category>

		<category><![CDATA[vertex buffers]]></category>

	<!-- AutoMeta Start -->
	<category>vertex</category>
	<category>tutorial</category>
	<category>devmaster</category>
	<category>things</category>
	<category>wanted</category>
	<category>objects</category>
	<category>demo</category>
	<category>buffer</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://kickingdragon.com/2006/07/25/opengl-vertex-buffer-objects-tutorial/</guid>
		<description><![CDATA[I’ve been dabbling in graphics programming a bit, mostly OpenGL glBegin/glEnd schtuff lately. A friend pointed me to vertex buffer objects (VBO’s) as a better alternative, so I decided to learn a bit about them. That said, I couldn’t find a tutorial that suited my needs, so I thought I’d offer one here.
First off, there [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been dabbling in graphics programming a bit, mostly OpenGL glBegin/glEnd schtuff lately. A friend pointed me to vertex buffer objects (VBO’s) as a better alternative, so I decided to learn a bit about them. That said, I couldn’t find a tutorial that suited my needs, so I thought I’d offer one here.</p>
<p>First off, there <em>are</em> tutorials out there, just not what I need/want.  Let me list them.</p>
<ul>
<li>NeHe, purveyor of all things graphical has a great tutorial (<a href="http://web.archive.org/web/20070107085239/http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=45">#45</a>), that I even used as a reference for mine.</li>
</ul>
<p>The problem for me was that it came with way more than what I wanted to learn at this point (heightmaps and the like), and I just wanted a focused example on VBO’s without having to worry about setting everything up “just right”.</p>
<ul>
<li><a href="http://web.archive.org/web/20070107085239/http://www.devmaster.net/">DevMaster</a>, my surrogate home, had a decent tutorial that was brief (<a href="http://web.archive.org/web/20070107085239/http://www.devmaster.net/articles/oglVertexBuffer/">here</a>), but had various errors and didn’t compile out of the box.   It also didn’t work, at least not for me!</li>
</ul>
<p>So here I decided to cobble together a working demo (<a href="http://web.archive.org/web/20070107085239/http://www.devmaster.net/forums/showthread.php?t=6600">once I figured out how</a>), and post it up for all the world to see.</p>
<p>Now keep in mind a few things about this:</p>
<p>1.- I might have my terminology messed up. I keep hearing people refer to this as DrawArrays, Vertex Buffer Objects, Vertex Array something-or-other, etc. <strong>If someone can clear this up for me, I’d be happy to hear from you.</strong></p>
<p>2.- I don’t do a lot of error checking in this demo. It’s definitely bad practice, but I wanted to keep things brief. There’s a couple of comments in there noting where I should be, and there might be a few places that I <em>should</em> mention these things.</p>
<p>Anyhow, without further ado, here’s the demo.  I hope it helps someone.</p>
<div class="hl-title">Download: <a href="http://kickingdragon.com/wp-content/plugins/coolcode/coolcode.php?p=6&amp;download=KickingDragon_VBODemo.cpp">KickingDragon_VBODemo.cpp</a></div><div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment">&nbsp; * Vertex Buffer Objects (herein after referred to as VBOs) demo.</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; * Author: Eddie Parker</span></li>
<li><span class="hl-mlcomment">&nbsp; * www.kickingdragon.com</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; * This demo is a really simple example of how to use VBOs [1].</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; * Why would you use VBOs? Because the data is uploaded an manipulated</span></li>
<li><span class="hl-mlcomment">&nbsp; * on the graphics card RAM instead of system RAM, therefore it's faster,</span></li>
<li><span class="hl-mlcomment">&nbsp; * and doesn't clog up your BUS, and keeps your whites whiter.</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; * [1] http://steinsoft.net/index.php?site=Programming/Code%20Snippets/OpenGL/no11</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; */</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-prepro">#define</span><span class="identifier1"> </span><span class="identifier6">WIN32_LEAN_AND_MEAN</span><span class="hl-prepro"></span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-prepro">#include </span><span class="identifier4">&lt;</span><span class="identifier5">windows.h</span><span class="identifier4">&gt;</span><span class="hl-prepro"></span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-prepro">#include </span><span class="identifier4">&lt;</span><span class="identifier5">SDL/SDL.h</span><span class="identifier4">&gt;</span><span class="hl-prepro"></span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-prepro">#include </span><span class="identifier4">&lt;</span><span class="identifier5">SDL/SDL_main.h</span><span class="identifier4">&gt;</span><span class="hl-prepro"></span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-prepro">#include </span><span class="identifier4">&lt;</span><span class="identifier5">GL/gl.h</span><span class="identifier4">&gt;</span><span class="hl-prepro"></span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-prepro">#include </span><span class="identifier4">&lt;</span><span class="identifier5">GL/glu.h</span><span class="identifier4">&gt;</span><span class="hl-prepro"></span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment">&nbsp; * glext.h snippet</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; * glext.h isn't always found in people's distributions.</span></li>
<li><span class="hl-mlcomment">&nbsp; * I've copied the parts we need here -- if you have it available,</span></li>
<li><span class="hl-mlcomment">&nbsp; * it would be better to include it directly.</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; * Basically, we have a couple of defines that are used later on for</span></li>
<li><span class="hl-mlcomment">&nbsp; * glBindBufferARB and glBufferDataARB calls, as well as typedefs</span></li>
<li><span class="hl-mlcomment">&nbsp; * that specify the function signatures for the functions we plan on using.</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; * Why do we need the typedefs?</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; * Quite simply, because the OpenGL Architecture Review Board (ARB) has</span></li>
<li><span class="hl-mlcomment">&nbsp; * created these functions as 'extensions' - that is, they're not part</span></li>
<li><span class="hl-mlcomment">&nbsp; * of the 'official' library, and therefore might or might not be</span></li>
<li><span class="hl-mlcomment">&nbsp; * available. At runtime, it's necessary to crack open the OpenGL</span></li>
<li><span class="hl-mlcomment">&nbsp; * DLL and retrieve the function pointers, assign them, and</span></li>
<li><span class="hl-mlcomment">&nbsp; * then we're able to use them in our application.</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; * For more information, see [1].</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; * [1] http://www.opengl.org/resources/faq/technical/extensions.htm</span></li>
<li><span class="hl-mlcomment">&nbsp; */</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-prepro">#define</span><span class="identifier1"> </span><span class="identifier6">GL_ARRAY_BUFFER_ARB</span><span class="identifier1"> </span><span class="identifier13">0x8892</span><span class="hl-prepro"></span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-prepro">#define</span><span class="identifier1"> </span><span class="identifier6">GL_STATIC_DRAW_ARB</span><span class="identifier1"> </span><span class="identifier13">0x88E4</span><span class="hl-prepro"></span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-types">typedef</span><span class="identifier1"> </span><span class="hl-types">void</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier6">APIENTRY</span><span class="identifier1"> * </span><span class="identifier6">PFNGLBINDBUFFERARBPROC</span><span class="identifier2">)</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier6">GLenum</span><span class="identifier1"> </span><span class="identifier6">target</span><span class="identifier1">, </span><span class="identifier6">GLuint</span><span class="identifier1"> </span><span class="identifier6">buffer</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="hl-types">typedef</span><span class="identifier1"> </span><span class="hl-types">void</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier6">APIENTRY</span><span class="identifier1"> * </span><span class="identifier6">PFNGLDELETEBUFFERSARBPROC</span><span class="identifier2">)</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier6">GLsizei</span><span class="identifier1"> </span><span class="identifier6">n</span><span class="identifier1">, </span><span class="hl-types">const</span><span class="identifier1"> </span><span class="identifier6">GLuint</span><span class="identifier1"> *</span><span class="identifier6">buffers</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="hl-types">typedef</span><span class="identifier1"> </span><span class="hl-types">void</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier6">APIENTRY</span><span class="identifier1"> * </span><span class="identifier6">PFNGLGENBUFFERSARBPROC</span><span class="identifier2">)</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier6">GLsizei</span><span class="identifier1"> </span><span class="identifier6">n</span><span class="identifier1">, </span><span class="identifier6">GLuint</span><span class="identifier1"> *</span><span class="identifier6">buffers</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="hl-types">typedef</span><span class="identifier1"> </span><span class="hl-types">void</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier6">APIENTRY</span><span class="identifier1"> * </span><span class="identifier6">PFNGLBUFFERDATAARBPROC</span><span class="identifier2">)</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier6">GLenum</span><span class="identifier1"> </span><span class="identifier6">target</span><span class="identifier1">, </span><span class="hl-types">int</span><span class="identifier1"> </span><span class="identifier6">size</span><span class="identifier1">, </span><span class="hl-types">const</span><span class="identifier1"> </span><span class="identifier6">GLvoid</span><span class="identifier1"> *</span><span class="identifier6">data</span><span class="identifier1">, </span><span class="identifier6">GLenum</span><span class="identifier1"> </span><span class="identifier6">usage</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; * END glext.h snippet</span></li>
<li><span class="hl-mlcomment">&nbsp; *</span></li>
<li><span class="hl-mlcomment">&nbsp; */</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment">&nbsp; * Allocate four function pointers on the data segment so we can assign to them later,</span></li>
<li><span class="hl-mlcomment">&nbsp; * if we have them available.</span></li>
<li><span class="hl-mlcomment">&nbsp; */</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier6">PFNGLGENBUFFERSARBPROC</span><span class="identifier1"> </span><span class="identifier6">glGenBuffersARB</span><span class="identifier1"> = </span><span class="hl-prepro">NULL</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier6">PFNGLBINDBUFFERARBPROC</span><span class="identifier1"> </span><span class="identifier6">glBindBufferARB</span><span class="identifier1"> = </span><span class="hl-prepro">NULL</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier6">PFNGLBUFFERDATAARBPROC</span><span class="identifier1"> </span><span class="identifier6">glBufferDataARB</span><span class="identifier1"> = </span><span class="hl-prepro">NULL</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier6">PFNGLDELETEBUFFERSARBPROC</span><span class="identifier1"> </span><span class="identifier6">glDeleteBuffersARB</span><span class="identifier1"> = </span><span class="hl-prepro">NULL</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment">&nbsp; * Initialization function to set up our requisite libraries.</span></li>
<li><span class="hl-mlcomment">&nbsp; */</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-types">int</span><span class="identifier1"> </span><span class="identifier6">Initialize</span><span class="identifier2">()</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">SDL_Init</span><span class="identifier2">(</span><span class="identifier6">SDL_INIT_VIDEO</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">SDL_SetVideoMode</span><span class="identifier2">(</span><span class="identifier13">640</span><span class="identifier1">, </span><span class="identifier13">480</span><span class="identifier1">, </span><span class="identifier13">32</span><span class="identifier1">, </span><span class="identifier13">2</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">//! @TODO: I should check for the availability of DrawArrays and</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// check for failure to load these functions.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glBindBufferARB</span><span class="identifier1"> = </span><span class="identifier2">(</span><span class="identifier6">PFNGLBINDBUFFERARBPROC</span><span class="identifier2">)</span><span class="identifier6">wglGetProcAddress</span><span class="identifier2">(</span><span class="identifier4">&quot;</span><span class="identifier5">glBindBufferARB</span><span class="identifier4">&quot;</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glGenBuffersARB</span><span class="identifier1"> = </span><span class="identifier2">(</span><span class="identifier6">PFNGLGENBUFFERSARBPROC</span><span class="identifier2">)</span><span class="identifier6">wglGetProcAddress</span><span class="identifier2">(</span><span class="identifier4">&quot;</span><span class="identifier5">glGenBuffersARB</span><span class="identifier4">&quot;</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glBufferDataARB</span><span class="identifier1"> = </span><span class="identifier2">(</span><span class="identifier6">PFNGLBUFFERDATAARBPROC</span><span class="identifier2">)</span><span class="identifier6">wglGetProcAddress</span><span class="identifier2">(</span><span class="identifier4">&quot;</span><span class="identifier5">glBufferDataARB</span><span class="identifier4">&quot;</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier2">}</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-types">int</span><span class="identifier1"> </span><span class="identifier6">main</span><span class="identifier2">(</span><span class="hl-types">int</span><span class="identifier1"> </span><span class="identifier6">argc</span><span class="identifier1">, </span><span class="hl-types">char</span><span class="identifier1"> **</span><span class="identifier6">argv</span><span class="identifier2">)</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// Setup our required libraries.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">Initialize</span><span class="identifier2">()</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// Set up OpenGL</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glMatrixMode</span><span class="identifier2">(</span><span class="identifier6">GL_PROJECTION</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glLoadIdentity</span><span class="identifier2">()</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// Initialize a perspective.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">gluPerspective</span><span class="identifier2">(</span><span class="identifier13">45</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">640</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1"> / </span><span class="identifier13">480</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">512</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// Set our clear colour to black</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glClearColor</span><span class="identifier2">(</span><span class="identifier13">0.0</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">0.0</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">0.0</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">1.0</span><span class="identifier6">f</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// Set up a purdy triangle as our vertex data.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">GLfloat</span><span class="identifier1"> </span><span class="identifier6">vertexData</span><span class="identifier2">[]</span><span class="identifier1"> =&nbsp; &nbsp; </span><span class="identifier2">{</span><span class="identifier1"> </span><span class="identifier13">0</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">0</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , -</span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, -</span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">0</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , </span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, -</span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">0</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier2">}</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// Set a lovely teal with some Gouraud shading for</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// our triangle.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">GLfloat</span><span class="identifier1"> </span><span class="identifier6">colourData</span><span class="identifier2">[]</span><span class="identifier1"> =&nbsp; &nbsp; </span><span class="identifier2">{</span><span class="identifier1"> </span><span class="identifier13">0</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">0</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , </span><span class="identifier13">0</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; , </span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1">, </span><span class="identifier13">1</span><span class="identifier1">.</span><span class="identifier6">f</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier2">}</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// Create some 'ids' for the buffers.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">GLuint</span><span class="identifier1"> </span><span class="identifier6">vertexBuffer</span><span class="identifier1"> = </span><span class="identifier13">0</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">GLuint</span><span class="identifier1"> </span><span class="identifier6">colourBuffer</span><span class="identifier1"> = </span><span class="identifier13">0</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// 1.- Generated a buffer name for our vertex buffer,</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glGenBuffersARB</span><span class="identifier2">(</span><span class="identifier13">1</span><span class="identifier1">, &amp;</span><span class="identifier6">vertexBuffer</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// 2.- Set our current 'in-use' buffer to our vertex buffer.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glBindBufferARB</span><span class="identifier2">(</span><span class="identifier6">GL_ARRAY_BUFFER_ARB</span><span class="identifier1">, </span><span class="identifier6">vertexBuffer</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// 3.- Fill out the data buffer using our initialized values.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glBufferDataARB</span><span class="identifier2">(</span><span class="identifier6">GL_ARRAY_BUFFER_ARB</span><span class="identifier1">, </span><span class="identifier8">sizeof</span><span class="identifier2">(</span><span class="identifier6">vertexData</span><span class="identifier2">)</span><span class="identifier1">, </span><span class="identifier6">vertexData</span><span class="identifier1">, </span><span class="identifier6">GL_STATIC_DRAW_ARB</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// Same as steps 1, 2 and 3 above, but using colour data.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glGenBuffersARB</span><span class="identifier2">(</span><span class="identifier13">1</span><span class="identifier1">, &amp;</span><span class="identifier6">colourBuffer</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glBindBufferARB</span><span class="identifier2">(</span><span class="identifier6">GL_ARRAY_BUFFER_ARB</span><span class="identifier1">, </span><span class="identifier6">colourBuffer</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glBufferDataARB</span><span class="identifier2">(</span><span class="identifier6">GL_ARRAY_BUFFER_ARB</span><span class="identifier1">, </span><span class="identifier8">sizeof</span><span class="identifier2">(</span><span class="identifier6">colourData</span><span class="identifier2">)</span><span class="identifier1">, </span><span class="identifier6">colourData</span><span class="identifier1">, </span><span class="identifier6">GL_STATIC_DRAW_ARB</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// Initialize the ability to use vertex arrays and colour arrays.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// I should really be making sure I have this capability and use</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// glIsEnabled first.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glEnableClientState</span><span class="identifier2">(</span><span class="identifier6">GL_VERTEX_ARRAY</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glEnableClientState</span><span class="identifier2">(</span><span class="identifier6">GL_COLOR_ARRAY</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="hl-types">bool</span><span class="identifier1"> </span><span class="identifier6">bRunning</span><span class="identifier1"> = </span><span class="identifier8">true</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">SDL_Event</span><span class="identifier1"> </span><span class="identifier6">event</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier8">while</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier6">bRunning</span><span class="identifier2">)</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier8">if</span><span class="identifier2">(</span><span class="identifier6">SDL_PollEvent</span><span class="identifier2">(</span><span class="identifier1">&amp;</span><span class="identifier6">event</span><span class="identifier2">))</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier8">if</span><span class="identifier2">(</span><span class="identifier6">event</span><span class="identifier1">.</span><span class="identifier6">key</span><span class="identifier1">.</span><span class="identifier6">keysym</span><span class="identifier1">.</span><span class="identifier6">sym</span><span class="identifier1"> == </span><span class="identifier6">SDLK_ESCAPE</span><span class="identifier2">)</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier6">bRunning</span><span class="identifier1"> = </span><span class="identifier8">false</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier8">continue</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier2">}</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier2">}</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier3">// Clear our depth buffer and color bit</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier6">glClear</span><span class="identifier2">(</span><span class="identifier6">GL_COLOR_BUFFER_BIT</span><span class="identifier1"> | </span><span class="identifier6">GL_DEPTH_BUFFER_BIT</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier3">// Reset our view</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier6">glMatrixMode</span><span class="identifier2">(</span><span class="identifier6">GL_MODELVIEW</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier6">glLoadIdentity</span><span class="identifier2">()</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier3">// Move back a bit to see our triangle in it's glory.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier6">glTranslatef</span><span class="identifier2">(</span><span class="identifier13">0</span><span class="identifier1">, </span><span class="identifier13">0</span><span class="identifier1">, -</span><span class="identifier13">5</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier3">// --- VBO's in action.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier3">// Set the vertexBuffer as the current buffer.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier6">glBindBufferARB</span><span class="identifier2">(</span><span class="identifier6">GL_ARRAY_BUFFER_ARB</span><span class="identifier1">, </span><span class="identifier6">vertexBuffer</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier3">// Specify that it's data is vertex data.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier6">glVertexPointer</span><span class="identifier2">(</span><span class="identifier13">3</span><span class="identifier1">, </span><span class="identifier6">GL_FLOAT</span><span class="identifier1">, </span><span class="identifier13">0</span><span class="identifier1">, </span><span class="identifier13">0</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier3">// Set the colourBuffer as the current buffer.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier6">glBindBufferARB</span><span class="identifier2">(</span><span class="identifier6">GL_ARRAY_BUFFER_ARB</span><span class="identifier1">, </span><span class="identifier6">colourBuffer</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier3">// Specify that it's data is colour data.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier6">glColorPointer</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier13">3</span><span class="identifier1">, </span><span class="identifier6">GL_FLOAT</span><span class="identifier1">, </span><span class="identifier13">0</span><span class="identifier1">, </span><span class="identifier13">0</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier3">// Tell OpenGL to draw what it sees. ;)</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier6">glDrawArrays</span><span class="identifier2">(</span><span class="identifier6">GL_TRIANGLE_STRIP</span><span class="identifier1">, </span><span class="identifier13">0</span><span class="identifier1">, </span><span class="identifier13">3</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier3">// --- End VBO's in action.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier3">// Swap buffers!</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; &nbsp; &nbsp; </span><span class="identifier6">SDL_GL_SwapBuffers</span><span class="identifier2">()</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier2">}</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">// Disable the client states.</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glDisableClientState</span><span class="identifier2">(</span><span class="identifier1"> </span><span class="identifier6">GL_VERTEX_ARRAY</span><span class="identifier1"> </span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier6">glDisableClientState</span><span class="identifier2">(</span><span class="identifier1"> </span><span class="identifier6">GL_COLOR_ARRAY</span><span class="identifier1"> </span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier3">//!TODO: Free the buffers created in glBufferDataARB</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span></li>
<li><span class="identifier1">&nbsp; &nbsp; </span><span class="identifier8">return</span><span class="identifier1"> </span><span class="identifier13">0</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier2">}</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://kickingdragon.com/2006/07/25/opengl-vertex-buffer-objects-tutorial/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Run Batch Files Without A Console Popup</title>
		<link>http://kickingdragon.com/2006/07/04/run-batch-files-without-a-console-popup/</link>
		<comments>http://kickingdragon.com/2006/07/04/run-batch-files-without-a-console-popup/#comments</comments>
		<pubDate>Tue, 04 Jul 2006 21:35:38 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[rawc]]></category>

		<category><![CDATA[resurrected post]]></category>

		<category><![CDATA[windows]]></category>

	<!-- AutoMeta Start -->
	<category>popup</category>
	<category>console</category>
	<category>files</category>
	<category>batch</category>
	<category>2006</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://kickingdragon.com/2006/07/04/run-batch-files-without-a-console-popup/</guid>
		<description><![CDATA[RAWC: Run Applications Without a Console: RAWC.zip
This application will basically run a batch file of the same name whenever it starts up, but masking it&#8217;s console that would normally pop up.
That is, if you take the RAWC.exe, and run it as is, it will attempt to run RAWC.bat.  Rename the .exe to whatever you [...]]]></description>
			<content:encoded><![CDATA[<p>RAWC: Run Applications Without a Console: <a href="http://kickingdragon.com/2006/07/04/run-batch-files-without-a-console-popup/rawczip/" rel="attachment wp-att-13" title="RAWC.zip">RAWC.zip</a></p>
<p>This application will basically run a batch file of the same name whenever it starts up, but masking it&#8217;s console that would normally pop up.</p>
<p>That is, if you take the RAWC.exe, and run it as is, it will attempt to run RAWC.bat.  Rename the .exe to whatever you like, say &#8220;foobar.exe&#8221; and it&#8217;ll try to run &#8220;foobar.bat&#8221;.  It will also pass any command line parameters to it, should you like.</p>
<p>Please note: if you like this application, please don&#8217;t link to it directly, instead link to this page so people can be aware of any updates.</p>
<p>The history:</p>
<p>I wrote the original source code, and a mysterious benefactor by the name of DrV rewrote it in C to make the executable smaller.</p>
<p>Future plans for this is to rewrite it in assembly using masm, and see if I can make the executable smaller.  Who knows.</p>
<p>Source code:</p>
<div class="hl-title">Download: <a href="http://kickingdragon.com/wp-content/plugins/coolcode/coolcode.php?p=12&amp;download=rawc.c">rawc.c</a></div><div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span class="hl-mlcomment">/**</span></li>
<li><span class="hl-mlcomment">* Author: DrV&nbsp; &nbsp; (http://drv.nu)</span></li>
<li><span class="hl-mlcomment">* Modified by: Eddie Parker (http://www.kickingdragon.com/2006/07/04/run-batch-files-without-a-console-popup/)</span></li>
<li><span class="hl-mlcomment">*/</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-prepro">#define</span><span class="identifier1"> </span><span class="identifier6">WIN32_LEAN_AND_MEAN</span><span class="hl-prepro"></span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-prepro">#include &amp;lt;windows.h&amp;gt;</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-prepro">#include &amp;lt;stdio.h&amp;gt;</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-types">static</span><span class="identifier1"> </span><span class="identifier6">STARTUPINFO</span><span class="identifier1"> </span><span class="identifier6">si</span><span class="identifier1"> = </span><span class="identifier2">{</span><span class="identifier1"> </span><span class="identifier8">sizeof</span><span class="identifier2">(</span><span class="identifier6">STARTUPINFO</span><span class="identifier2">)</span><span class="identifier1"> </span><span class="identifier2">}</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="hl-types">static</span><span class="identifier1"> </span><span class="identifier6">PROCESS_INFORMATION</span><span class="identifier1"> </span><span class="identifier6">pi</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-types">unsigned</span><span class="identifier1"> </span><span class="hl-types">int</span><span class="identifier1"> </span><span class="identifier6">strlen</span><span class="identifier2">(</span><span class="hl-types">char</span><span class="identifier1"> * </span><span class="identifier6">pStr</span><span class="identifier2">)</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-types">unsigned</span><span class="identifier1"> </span><span class="hl-types">int</span><span class="identifier1"> </span><span class="identifier6">count</span><span class="identifier1"> = </span><span class="identifier13">0</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier8">while</span><span class="identifier2">(</span><span class="identifier1">*</span><span class="identifier6">pStr</span><span class="identifier1"> != </span><span class="identifier13">0</span><span class="identifier2">)</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1">++</span><span class="identifier6">count</span><span class="identifier1">;</span></li>
<li><span class="identifier1">++</span><span class="identifier6">pStr</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier2">}</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier8">return</span><span class="identifier1"> </span><span class="identifier6">count</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier2">}</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-types">void</span><span class="identifier1"> </span><span class="identifier6">strcpy</span><span class="identifier2">(</span><span class="identifier1"> </span><span class="hl-types">char</span><span class="identifier1"> * </span><span class="identifier6">pDestination</span><span class="identifier1">, </span><span class="hl-types">char</span><span class="identifier1"> * </span><span class="identifier6">kpSource</span><span class="identifier2">)</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier8">for</span><span class="identifier2">(</span><span class="hl-types">unsigned</span><span class="identifier1"> </span><span class="hl-types">int</span><span class="identifier1"> </span><span class="identifier6">i</span><span class="identifier1"> = </span><span class="identifier13">0</span><span class="identifier1">; </span><span class="identifier6">i</span><span class="identifier1"> &amp;</span><span class="identifier6">lt</span><span class="identifier1">; </span><span class="identifier6">strlen</span><span class="identifier2">(</span><span class="identifier6">kpSource</span><span class="identifier2">)</span><span class="identifier1">; ++</span><span class="identifier6">i</span><span class="identifier2">)</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier6">pDestination</span><span class="identifier2">[</span><span class="identifier6">i</span><span class="identifier2">]</span><span class="identifier1"> = </span><span class="identifier6">kpSource</span><span class="identifier2">[</span><span class="identifier6">i</span><span class="identifier2">]</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier2">}</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier2">}</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-types">int</span><span class="identifier1"> </span><span class="identifier6">main</span><span class="identifier2">(</span><span class="hl-types">int</span><span class="identifier1"> </span><span class="identifier6">argc</span><span class="identifier1">, </span><span class="hl-types">char</span><span class="identifier1"> **</span><span class="identifier6">argv</span><span class="identifier2">)</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-types">char</span><span class="identifier1"> </span><span class="identifier6">applicationName</span><span class="identifier2">[</span><span class="identifier6">MAX_PATH</span><span class="identifier1"> + </span><span class="identifier13">1</span><span class="identifier2">]</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="hl-types">char</span><span class="identifier1"> *</span><span class="identifier6">pDot</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier6">GetModuleFileName</span><span class="identifier2">(</span><span class="hl-prepro">NULL</span><span class="identifier1">, </span><span class="identifier6">applicationName</span><span class="identifier1">, </span><span class="identifier8">sizeof</span><span class="identifier2">(</span><span class="identifier6">applicationName</span><span class="identifier2">))</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier6">pDot</span><span class="identifier1"> = </span><span class="identifier6">applicationName</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier3">// Fast forward to the NULL.</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier8">while</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier1">*</span><span class="identifier2">(</span><span class="identifier6">pDot</span><span class="identifier1">++</span><span class="identifier2">))</span><span class="identifier1"></span></li>
<li><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier3">// Move back until we find the start of the extension.</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier8">while</span><span class="identifier1"> </span><span class="identifier2">(</span><span class="identifier1">*</span><span class="identifier2">(</span><span class="identifier1">--</span><span class="identifier6">pDot</span><span class="identifier2">)</span><span class="identifier1"> != '.'</span><span class="identifier2">)</span><span class="identifier1"></span></li>
<li><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier3">// Add a '.bat' to the extension.</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier6">pDot</span><span class="identifier2">[</span><span class="identifier13">1</span><span class="identifier2">]</span><span class="identifier1"> = '</span><span class="identifier6">b</span><span class="identifier1">';</span></li>
<li><span class="identifier1"></span><span class="identifier6">pDot</span><span class="identifier2">[</span><span class="identifier13">2</span><span class="identifier2">]</span><span class="identifier1"> = '</span><span class="identifier6">a</span><span class="identifier1">';</span></li>
<li><span class="identifier1"></span><span class="identifier6">pDot</span><span class="identifier2">[</span><span class="identifier13">3</span><span class="identifier2">]</span><span class="identifier1"> = '</span><span class="identifier6">t</span><span class="identifier1">';</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="hl-types">char</span><span class="identifier1"> </span><span class="identifier6">commandLine</span><span class="identifier2">[</span><span class="identifier6">MAX_PATH</span><span class="identifier1"> + </span><span class="identifier13">1</span><span class="identifier2">]</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="hl-types">char</span><span class="identifier1"> * </span><span class="identifier6">pEndPoint</span><span class="identifier1"> = &amp;</span><span class="identifier6">amp</span><span class="identifier1">;</span><span class="identifier6">commandLine</span><span class="identifier2">[</span><span class="identifier13">0</span><span class="identifier2">]</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier6">strcpy</span><span class="identifier2">(</span><span class="identifier6">pEndPoint</span><span class="identifier1">, </span><span class="identifier6">applicationName</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier6">pEndPoint</span><span class="identifier1"> += </span><span class="identifier6">strlen</span><span class="identifier2">(</span><span class="identifier6">applicationName</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="hl-types">int</span><span class="identifier1"> </span><span class="identifier6">i</span><span class="identifier1"> = </span><span class="identifier13">0</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier8">for</span><span class="identifier2">(</span><span class="identifier6">i</span><span class="identifier1"> = </span><span class="identifier13">1</span><span class="identifier1">; </span><span class="identifier6">i</span><span class="identifier1"> &amp;</span><span class="identifier6">lt</span><span class="identifier1">; </span><span class="identifier6">argc</span><span class="identifier1">; ++</span><span class="identifier6">i</span><span class="identifier2">)</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier2">{</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier6">pEndPoint</span><span class="identifier2">[</span><span class="identifier13">0</span><span class="identifier2">]</span><span class="identifier1"> = ' ';</span></li>
<li><span class="identifier1">++</span><span class="identifier6">pEndPoint</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier6">strcpy</span><span class="identifier2">(</span><span class="identifier1"> </span><span class="identifier6">pEndPoint</span><span class="identifier1">, </span><span class="identifier6">argv</span><span class="identifier2">[</span><span class="identifier6">i</span><span class="identifier2">]</span><span class="identifier1"> </span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier6">pEndPoint</span><span class="identifier1"> += </span><span class="identifier6">strlen</span><span class="identifier2">(</span><span class="identifier6">argv</span><span class="identifier2">[</span><span class="identifier6">i</span><span class="identifier2">])</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier2">}</span><span class="identifier1"></span></li>
<li><span class="identifier1"></span><span class="identifier2">}</span><span class="identifier1"></span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier6">pEndPoint</span><span class="identifier2">[</span><span class="identifier13">0</span><span class="identifier2">]</span><span class="identifier1"> = </span><span class="identifier13">0</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier6">si</span><span class="identifier1">.</span><span class="identifier6">dwFlags</span><span class="identifier1"> = </span><span class="identifier6">STARTF_USESHOWWINDOW</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier6">si</span><span class="identifier1">.</span><span class="identifier6">wShowWindow</span><span class="identifier1"> = </span><span class="identifier6">SW_HIDE</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier6">printf</span><span class="identifier2">(</span><span class="identifier4">&quot;</span><span class="identifier5">Running %s.</span><span class="identifier4">&quot;</span><span class="identifier1">, &amp;</span><span class="identifier6">amp</span><span class="identifier1">;</span><span class="identifier6">commandLine</span><span class="identifier2">[</span><span class="identifier13">0</span><span class="identifier2">])</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier6">CreateProcess</span><span class="identifier2">(</span><span class="identifier6">applicationName</span><span class="identifier1">, &amp;</span><span class="identifier6">amp</span><span class="identifier1">;</span><span class="identifier6">commandLine</span><span class="identifier2">[</span><span class="identifier13">0</span><span class="identifier2">]</span><span class="identifier1">, </span><span class="hl-prepro">NULL</span><span class="identifier1">, </span><span class="hl-prepro">NULL</span><span class="identifier1">, </span><span class="hl-prepro">FALSE</span><span class="identifier1">, </span><span class="identifier13">0</span><span class="identifier1">, </span><span class="hl-prepro">NULL</span><span class="identifier1">, </span><span class="hl-prepro">NULL</span><span class="identifier1">, &amp;</span><span class="identifier6">amp</span><span class="identifier1">;</span><span class="identifier6">si</span><span class="identifier1">, π</span><span class="identifier2">)</span><span class="identifier1">;</span></li>
<li><span class="identifier1">&nbsp;</span></li>
<li><span class="identifier1"></span><span class="identifier8">return</span><span class="identifier1"> </span><span class="identifier13">0</span><span class="identifier1">;</span></li>
<li><span class="identifier1"></span><span class="identifier2">}</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://kickingdragon.com/2006/07/04/run-batch-files-without-a-console-popup/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Posting Using w.bloggar and Secure Tunneling</title>
		<link>http://kickingdragon.com/2005/08/31/posting-using-wbloggar-and-secure-tunneling/</link>
		<comments>http://kickingdragon.com/2005/08/31/posting-using-wbloggar-and-secure-tunneling/#comments</comments>
		<pubDate>Wed, 31 Aug 2005 08:31:57 +0000</pubDate>
		<dc:creator>eddie</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[blogging]]></category>

		<category><![CDATA[proxies]]></category>

		<category><![CDATA[putty]]></category>

		<category><![CDATA[resurrected post]]></category>

		<category><![CDATA[secure tunnelling]]></category>

		<category><![CDATA[w bloggar]]></category>

	<!-- AutoMeta Start -->
	<category>bloggar’s</category>
	<category>tunneling</category>
	<category>bloggar</category>
	<category>secure</category>
	<category>totally</category>
	<category>question</category>
	<category>recognize</category>
	<category>signed</category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://kickingdragon.com/2005/08/31/posting-using-wbloggar-and-secure-tunneling/</guid>
		<description><![CDATA[This post is relatively old, however people seem to be searching for it still, so I&#8217;ve ressurected it. I no longer do this, but it should still be possible:
Wow. I never thought about it, but I’ve been having issues with w.bloggar and it’s SSL based post method.. No more!
I think the problem is that I [...]]]></description>
			<content:encoded><![CDATA[<p>This post is relatively old, however people seem to be searching for it still, so I&#8217;ve ressurected it. I no longer do this, but it should still be possible:</p>
<p>Wow. I never thought about it, but I’ve been having issues with w.bloggar and it’s SSL based post method.. No more!</p>
<p>I think the problem is that I have a self-signed certificate, and w.bloggar’s having an issue with that.</p>
<p>I’m not sure if I can fiddle with my OS to get it to recognize it without question or something, but I totally thought of a better way.Tunnels! <img src='http://kickingdragon.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Using PuTTY and secure tunneling, as well as Bloggar’s ability to use proxies, I just have this communicating with my home machine. Cool, no?</p>
]]></content:encoded>
			<wfw:commentRss>http://kickingdragon.com/2005/08/31/posting-using-wbloggar-and-secure-tunneling/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
