<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WinSoft.se &#187; Game development</title>
	<atom:link href="http://www.winsoft.se/tag/game-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.winsoft.se</link>
	<description>Development with focus on Visual Basic .NET</description>
	<lastBuildDate>Thu, 26 Jan 2012 19:28:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Hardware accelerated graphics through XNA: Getting started</title>
		<link>http://www.winsoft.se/2010/01/hardware-accelerated-graphics-through-xna-getting-started/</link>
		<comments>http://www.winsoft.se/2010/01/hardware-accelerated-graphics-through-xna-getting-started/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 23:45:26 +0000</pubDate>
		<dc:creator>Anders Hesselbom</dc:creator>
				<category><![CDATA[Visual Basic 10]]></category>
		<category><![CDATA[Visual Studio 10]]></category>
		<category><![CDATA[Game development]]></category>

		<guid isPermaLink="false">http://www.winsoft.se/?p=832</guid>
		<description><![CDATA[There are some features of the XNA Framework that is unavailable from Visual Basic, but this should not stop you from writing descent games in Visual Basic. On my machine, I have installed XNA Game Studio 3.1 (a game developing environment from Microsoft) and I also have a beta of Visual Studio 2010 that I [...]]]></description>
			<content:encoded><![CDATA[<p>There are some features of the XNA Framework that is unavailable from Visual Basic, but this should not stop you from writing descent games in Visual Basic. On my machine, I have installed <a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&#038;FamilyID=80782277-d584-42d2-8024-893fcd9d3e82" target="_blank">XNA Game Studio 3.1</a> (a game developing environment from Microsoft) and I also have a beta of Visual Studio 2010 that I am going to use. This example will just contain the code necessary to get something on the screen, a sprite floating across.</p>
<p>From VS2010, I am using a regular console application and the target platform for the project is .NET Framework 3.5.</p>
<p>Now I must add two references: <strong>Microsoft.Xna.Framework</strong> and <strong>Microsoft.Xna.Framework.Game</strong>. I use version 3.1, the version that got installed when I installed XNA Game Studio 3.1.</p>
<p>The next step is to create the game class. I call my class <strong>TestGame</strong>. <strong>TestGame</strong> should inherit from the <strong>Microsoft.Xna.Framework.Game</strong> class. In here I create a <strong>Main</strong> method to get the program started, and I select that method to be the starting point for the program in the Project Settings window. This is the code so far:</p>
<pre class="csharpcode">
<span class="kwrd">Public</span> <span class="kwrd">Class</span> TestGame
    <span class="kwrd">Inherits</span> Microsoft.Xna.Framework.Game

    <span class="kwrd">Public</span> <span class="kwrd">Shared</span> <span class="kwrd">Sub</span> Main()

    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

<span class="kwrd">End</span> Class</pre>
<p>In the <strong>Main</strong> method, I create my game (the <strong>TestGame</strong> class) and from the constructor, a graphics device manager for the game. I use the graphics device manager to set my preferred resolution (800&#215;600) and to switch to fullscreen mode. Note that I want to keep the reference to the graphics device manager as a member of my game class.</p>
<pre class="csharpcode">
<span class="kwrd">Public</span> <span class="kwrd">Class</span> TestGame
    <span class="kwrd">Inherits</span> Microsoft.Xna.Framework.Game

    <span class="kwrd">Private</span> Gfx <span class="kwrd">As</span> Microsoft.Xna.Framework.GraphicsDeviceManager

    <span class="kwrd">Public</span> <span class="kwrd">Shared</span> <span class="kwrd">Sub</span> Main()
        <span class="kwrd">Dim</span> Game <span class="kwrd">As</span> <span class="kwrd">New</span> TestGame()
        Game.Run()
    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

    <span class="kwrd">Public</span> <span class="kwrd">Sub</span> <span class="kwrd">New</span>()
        <span class="kwrd">Me</span>.Gfx = <span class="kwrd">New</span> Microsoft.Xna.Framework.GraphicsDeviceManager(<span class="kwrd">Me</span>)
        <span class="kwrd">Me</span>.Gfx.PreferredBackBufferWidth = 800
        <span class="kwrd">Me</span>.Gfx.PreferredBackBufferHeight = 600
        <span class="kwrd">If</span> <span class="kwrd">Not</span> <span class="kwrd">Me</span>.Gfx.IsFullScreen <span class="kwrd">Then</span>
            <span class="kwrd">Me</span>.Gfx.ToggleFullScreen()
        <span class="kwrd">End</span> <span class="kwrd">If</span>
    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

<span class="kwrd">End</span> Class</pre>
<p>The next thing to do is some overrides from the base class. These methods will be overloaded:</p>
<pre class="csharpcode">
<span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> Initialize()
    <span class="kwrd">MyBase</span>.Initialize()
<span class="kwrd">End</span> <span class="kwrd">Sub</span>

<span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> LoadContent()
    <span class="kwrd">MyBase</span>.LoadContent()
<span class="kwrd">End</span> <span class="kwrd">Sub</span>

<span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> UnloadContent()
    <span class="kwrd">MyBase</span>.UnloadContent()
<span class="kwrd">End</span> <span class="kwrd">Sub</span>

<span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> Update(<span class="kwrd">ByVal</span> gameTime <span class="kwrd">As</span> Microsoft.Xna.Framework.GameTime)
    <span class="kwrd">MyBase</span>.Update(gameTime)
<span class="kwrd">End</span> <span class="kwrd">Sub</span>

<span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> Draw(<span class="kwrd">ByVal</span> gameTime <span class="kwrd">As</span> Microsoft.Xna.Framework.GameTime)
    <span class="kwrd">MyBase</span>.Draw(gameTime)
<span class="kwrd">End</span> Sub</pre>
<p>Just to make something happen on the screen, I am adding these members:</p>
<pre class="csharpcode">
<span class="kwrd">Private</span> Sb <span class="kwrd">As</span> Microsoft.Xna.Framework.Graphics.SpriteBatch
<span class="kwrd">Private</span> SpriteTexture <span class="kwrd">As</span> Microsoft.Xna.Framework.Graphics.Texture2D
<span class="kwrd">Private</span> SpriteX <span class="kwrd">As</span> <span class="kwrd">Integer</span> = 0
<span class="kwrd">Private</span> SpriteY <span class="kwrd">As</span> <span class="kwrd">Integer</span> = 0</pre>
<p>The <strong>SpriteBatch</strong> will manage my sprites and the <strong>Texture2D</strong> is the sprite graphics. In the LoadContent function, I will load a sprite from my hard drive.</p>
<pre class="csharpcode">
<span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> LoadContent()
    <span class="kwrd">Me</span>.Sb = <span class="kwrd">New</span> Microsoft.Xna.Framework.Graphics.SpriteBatch(<span class="kwrd">Me</span>.Gfx.GraphicsDevice)
    <span class="kwrd">Me</span>.SpriteTexture = Microsoft.Xna.Framework.Graphics.Texture2D.FromFile(<span class="kwrd">Me</span>.Gfx.GraphicsDevice, _
         <span class="str">"mysprite.png"</span>)
    <span class="kwrd">MyBase</span>.LoadContent()
<span class="kwrd">End</span> Sub</pre>
<p>The <strong>Update</strong> function is for changing the game scenery.</p>
<pre class="csharpcode">
<span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> Update(<span class="kwrd">ByVal</span> gameTime <span class="kwrd">As</span> Microsoft.Xna.Framework.GameTime)
    SpriteX += 1
    SpriteY += 1
    <span class="kwrd">MyBase</span>.Update(gameTime)
<span class="kwrd">End</span> Sub</pre>
<p>And the <strong>Draw</strong> function is for screen rendering.</p>
<pre class="csharpcode">
<span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> Draw(<span class="kwrd">ByVal</span> gameTime <span class="kwrd">As</span> Microsoft.Xna.Framework.GameTime)
    <span class="kwrd">Me</span>.Gfx.GraphicsDevice.Clear(Microsoft.Xna.Framework.Graphics.Color.Black)
    <span class="kwrd">Me</span>.Sb.Begin(Microsoft.Xna.Framework.Graphics.SpriteBlendMode.AlphaBlend)
    <span class="kwrd">Me</span>.Sb.Draw(<span class="kwrd">Me</span>.SpriteTexture, <span class="kwrd">New</span> Microsoft.Xna.Framework.Rectangle(<span class="kwrd">Me</span>.SpriteX, <span class="kwrd">Me</span>.SpriteY, 32, 32), _
         Microsoft.Xna.Framework.Graphics.Color.Red)
    <span class="kwrd">Me</span>.Sb.<span class="kwrd">End</span>()
    <span class="kwrd">MyBase</span>.Draw(gameTime)
<span class="kwrd">End</span> Sub</pre>
<p>This is the complete code that produces a sprite that floats over the screen in Visual Basic using XNA:</p>
<pre class="csharpcode">
<span class="kwrd">Public</span> <span class="kwrd">Class</span> TestGame
    <span class="kwrd">Inherits</span> Microsoft.Xna.Framework.Game

    <span class="kwrd">Private</span> Gfx <span class="kwrd">As</span> Microsoft.Xna.Framework.GraphicsDeviceManager

    <span class="kwrd">Private</span> Sb <span class="kwrd">As</span> Microsoft.Xna.Framework.Graphics.SpriteBatch
    <span class="kwrd">Private</span> SpriteTexture <span class="kwrd">As</span> Microsoft.Xna.Framework.Graphics.Texture2D
    <span class="kwrd">Private</span> SpriteX <span class="kwrd">As</span> <span class="kwrd">Integer</span> = 0
    <span class="kwrd">Private</span> SpriteY <span class="kwrd">As</span> <span class="kwrd">Integer</span> = 0

    <span class="kwrd">Public</span> <span class="kwrd">Shared</span> <span class="kwrd">Sub</span> Main()
        <span class="kwrd">Dim</span> Game <span class="kwrd">As</span> <span class="kwrd">New</span> TestGame()
        Game.Run()
    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

    <span class="kwrd">Public</span> <span class="kwrd">Sub</span> <span class="kwrd">New</span>()
        <span class="kwrd">Me</span>.Gfx = <span class="kwrd">New</span> Microsoft.Xna.Framework.GraphicsDeviceManager(<span class="kwrd">Me</span>)
        <span class="kwrd">Me</span>.Gfx.PreferredBackBufferWidth = 800
        <span class="kwrd">Me</span>.Gfx.PreferredBackBufferHeight = 600
        <span class="kwrd">If</span> <span class="kwrd">Not</span> <span class="kwrd">Me</span>.Gfx.IsFullScreen <span class="kwrd">Then</span>
            <span class="kwrd">Me</span>.Gfx.ToggleFullScreen()
        <span class="kwrd">End</span> <span class="kwrd">If</span>
    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

    <span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> Initialize()
        <span class="kwrd">MyBase</span>.Initialize()
    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

    <span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> LoadContent()
        <span class="kwrd">Me</span>.Sb = <span class="kwrd">New</span> Microsoft.Xna.Framework.Graphics.SpriteBatch(<span class="kwrd">Me</span>.Gfx.GraphicsDevice)
        <span class="kwrd">Me</span>.SpriteTexture = Microsoft.Xna.Framework.Graphics.Texture2D.FromFile(<span class="kwrd">Me</span>.Gfx.GraphicsDevice, _
              <span class="str">"mysprite.png"</span>)
        <span class="kwrd">MyBase</span>.LoadContent()
    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

    <span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> UnloadContent()
        <span class="kwrd">MyBase</span>.UnloadContent()
    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

    <span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> Update(<span class="kwrd">ByVal</span> gameTime <span class="kwrd">As</span> Microsoft.Xna.Framework.GameTime)
        SpriteX += 1
        SpriteY += 1
        <span class="kwrd">MyBase</span>.Update(gameTime)
    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

    <span class="kwrd">Protected</span> <span class="kwrd">Overrides</span> <span class="kwrd">Sub</span> Draw(<span class="kwrd">ByVal</span> gameTime <span class="kwrd">As</span> Microsoft.Xna.Framework.GameTime)
        <span class="kwrd">Me</span>.Gfx.GraphicsDevice.Clear(Microsoft.Xna.Framework.Graphics.Color.Black)
        <span class="kwrd">Me</span>.Sb.Begin(Microsoft.Xna.Framework.Graphics.SpriteBlendMode.AlphaBlend)
        <span class="kwrd">Me</span>.Sb.Draw(<span class="kwrd">Me</span>.SpriteTexture, <span class="kwrd">New</span> Microsoft.Xna.Framework.Rectangle(<span class="kwrd">Me</span>.SpriteX, <span class="kwrd">Me</span>.SpriteY, 32, 32), _
                Microsoft.Xna.Framework.Graphics.Color.Red)
        <span class="kwrd">Me</span>.Sb.<span class="kwrd">End</span>()
        <span class="kwrd">MyBase</span>.Draw(gameTime)
    <span class="kwrd">End</span> <span class="kwrd">Sub</span>

<span class="kwrd">End</span> <span class="kwrd">Class</span>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.winsoft.se/2010/01/hardware-accelerated-graphics-through-xna-getting-started/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

