<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Implementing a Graphic Driver Abstraction</title>
	<atom:link href="http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/feed/" rel="self" type="application/rss+xml" />
	<link>http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/</link>
	<description>Code, 3D, Games, Linux and much more...</description>
	<lastBuildDate>Mon, 09 Nov 2009 03:12:38 +0100</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: ent</title>
		<link>http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/comment-page-1/#comment-112355</link>
		<dc:creator>ent</dc:creator>
		<pubDate>Wed, 23 Apr 2008 10:34:30 +0000</pubDate>
		<guid isPermaLink="false">http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/#comment-112355</guid>
		<description>Hi Angelo,

There is one clear advantage to me in using interfaces: hiding the implementation details. Or what is the same: reducing incremental building times. As the architecture grows and grows, building times can easily become a serious bottleneck.

If, when profiling, you discover that the vtable is adding a notable overhead you always can do a simple:

typedef MyInterface MyImplementationClass;

and voila!, your problems disappear. :)</description>
		<content:encoded><![CDATA[<p>Hi Angelo,</p>
<p>There is one clear advantage to me in using interfaces: hiding the implementation details. Or what is the same: reducing incremental building times. As the architecture grows and grows, building times can easily become a serious bottleneck.</p>
<p>If, when profiling, you discover that the vtable is adding a notable overhead you always can do a simple:</p>
<p>typedef MyInterface MyImplementationClass;</p>
<p>and voila!, your problems disappear. <img src='http://entland.homelinux.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Angelo Pesce</title>
		<link>http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/comment-page-1/#comment-112229</link>
		<dc:creator>Angelo Pesce</dc:creator>
		<pubDate>Wed, 23 Apr 2008 02:14:56 +0000</pubDate>
		<guid isPermaLink="false">http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/#comment-112229</guid>
		<description>I hate the idea of using pure virtual functions, not because of the overhead but because it&#039;s another, useless class to change when you have to modify a definition. Also it&#039;s not safe, someone could add a function only in the DirectX10 implementation and forget to add it to the abstract interface. Also they are an abuse, an interface that has only one implementation (because the PS3 one won&#039;t be in the X360 project, so in a given project you end up having only one)...
What I did is to have a common header, with platform specific includes for the inline functions and platform specific implementations.</description>
		<content:encoded><![CDATA[<p>I hate the idea of using pure virtual functions, not because of the overhead but because it&#8217;s another, useless class to change when you have to modify a definition. Also it&#8217;s not safe, someone could add a function only in the DirectX10 implementation and forget to add it to the abstract interface. Also they are an abuse, an interface that has only one implementation (because the PS3 one won&#8217;t be in the X360 project, so in a given project you end up having only one)&#8230;<br />
What I did is to have a common header, with platform specific includes for the inline functions and platform specific implementations.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pixelame.net</title>
		<link>http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/comment-page-1/#comment-94152</link>
		<dc:creator>pixelame.net</dc:creator>
		<pubDate>Thu, 06 Mar 2008 13:01:19 +0000</pubDate>
		<guid isPermaLink="false">http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/#comment-94152</guid>
		<description>&lt;strong&gt;Implementing a Graphic Driver Abstraction...&lt;/strong&gt;

En esta entrada del blog de Jesus de Santos, nos explica a rasgos generales los puntos fundamentales a tener en cuenta a la hora de crear la abstraccion del API del rasterizador. Muy recomendado para la gente que esta haciendo motores. No os perdais lo...</description>
		<content:encoded><![CDATA[<p><strong>Implementing a Graphic Driver Abstraction&#8230;</strong></p>
<p>En esta entrada del blog de Jesus de Santos, nos explica a rasgos generales los puntos fundamentales a tener en cuenta a la hora de crear la abstraccion del API del rasterizador. Muy recomendado para la gente que esta haciendo motores. No os perdais lo&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ricky</title>
		<link>http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/comment-page-1/#comment-93637</link>
		<dc:creator>Ricky</dc:creator>
		<pubDate>Wed, 05 Mar 2008 10:35:10 +0000</pubDate>
		<guid isPermaLink="false">http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/#comment-93637</guid>
		<description>Great post!!
I&#039;m looking forward to learn more about this subject in the upcoming course about Videogame Graphics Engines you are going to give for the GameLab on April. :)</description>
		<content:encoded><![CDATA[<p>Great post!!<br />
I&#8217;m looking forward to learn more about this subject in the upcoming course about Videogame Graphics Engines you are going to give for the GameLab on April. <img src='http://entland.homelinux.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Miguel Herrero</title>
		<link>http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/comment-page-1/#comment-93277</link>
		<dc:creator>Miguel Herrero</dc:creator>
		<pubDate>Tue, 04 Mar 2008 17:47:55 +0000</pubDate>
		<guid isPermaLink="false">http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/#comment-93277</guid>
		<description>Now it makes more sense :D
Though it seems like it&#039;s hard work.</description>
		<content:encoded><![CDATA[<p>Now it makes more sense <img src='http://entland.homelinux.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
Though it seems like it&#8217;s hard work.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ent</title>
		<link>http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/comment-page-1/#comment-93244</link>
		<dc:creator>ent</dc:creator>
		<pubDate>Tue, 04 Mar 2008 16:03:59 +0000</pubDate>
		<guid isPermaLink="false">http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/#comment-93244</guid>
		<description>Hi Miguel,

Yes, the GameBryo approach exposes only high level primitives: meshes, particles systems. You implement those primitives in each platform, for example in DX10 you could implement the particles using geometry shaders and export capabilities while you could use dynamic vertex buffers in DX9.

With immediate mode I mean the mode in which the orders send to the API are executed immediately. Of course, you need some kind of batch for the GUI. You should render all the quads with the same texture in a single call.

So, instead of having only a retained mode API, I prefer having a retained mode API implemented using a immediante mode API. This way you can have several retained mode APIs: one for the scene3D, one for the GUI, one for draw debug elements, etc</description>
		<content:encoded><![CDATA[<p>Hi Miguel,</p>
<p>Yes, the GameBryo approach exposes only high level primitives: meshes, particles systems. You implement those primitives in each platform, for example in DX10 you could implement the particles using geometry shaders and export capabilities while you could use dynamic vertex buffers in DX9.</p>
<p>With immediate mode I mean the mode in which the orders send to the API are executed immediately. Of course, you need some kind of batch for the GUI. You should render all the quads with the same texture in a single call.</p>
<p>So, instead of having only a retained mode API, I prefer having a retained mode API implemented using a immediante mode API. This way you can have several retained mode APIs: one for the scene3D, one for the GUI, one for draw debug elements, etc</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zalo</title>
		<link>http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/comment-page-1/#comment-93182</link>
		<dc:creator>Zalo</dc:creator>
		<pubDate>Tue, 04 Mar 2008 13:23:27 +0000</pubDate>
		<guid isPermaLink="false">http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/#comment-93182</guid>
		<description>Pretty interesting

I have applied some of these tips in my engine for DS and Symbian :P</description>
		<content:encoded><![CDATA[<p>Pretty interesting</p>
<p>I have applied some of these tips in my engine for DS and Symbian <img src='http://entland.homelinux.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Miguel Herrero</title>
		<link>http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/comment-page-1/#comment-93068</link>
		<dc:creator>Miguel Herrero</dc:creator>
		<pubDate>Tue, 04 Mar 2008 08:38:23 +0000</pubDate>
		<guid isPermaLink="false">http://entland.homelinux.com/blog/2008/03/03/implementing-a-graphic-driver-abstraction/#comment-93068</guid>
		<description>Great post! It was nice to read and still have interesting tips.

I&#039;ve taken the Gamebryo aproach which, if I understood correctly, doesn&#039;t have a custom vertex stream object, but only high level objects isn&#039;t it?

The only thing that surprised me was the &#039;immediate mode&#039; in the GUI. Really? I thought immediate mode was very inneficient and so I only use it to debug.</description>
		<content:encoded><![CDATA[<p>Great post! It was nice to read and still have interesting tips.</p>
<p>I&#8217;ve taken the Gamebryo aproach which, if I understood correctly, doesn&#8217;t have a custom vertex stream object, but only high level objects isn&#8217;t it?</p>
<p>The only thing that surprised me was the &#8216;immediate mode&#8217; in the GUI. Really? I thought immediate mode was very inneficient and so I only use it to debug.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
