<?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>ScapeCode &#187; Python</title>
	<atom:link href="http://scapecode.com/category/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://scapecode.com</link>
	<description>Anime, tentacles, and software development.</description>
	<lastBuildDate>Thu, 26 Aug 2010 22:32:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Building a SlimDX MiniTriangle sample with Direct3D11 and IronPython</title>
		<link>http://scapecode.com/2010/08/building-a-slimdx-minitriangle-sample-with-direct3d11-and-ironpython/</link>
		<comments>http://scapecode.com/2010/08/building-a-slimdx-minitriangle-sample-with-direct3d11-and-ironpython/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 22:27:21 +0000</pubDate>
		<dc:creator>Washu</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SlimDX]]></category>

		<guid isPermaLink="false">https://scapecode.com/2010/08/building-a-slimdx-minitriangle-sample-with-direct3d11-and-ironpython/</guid>
		<description><![CDATA[I generally don&#8217;t post huge code dumps, mainly because I find them more annoying and less helpful than some books/authors might. But you know, I&#8217;ve been playing with IronPython/SlimDX recently and decided to do up another SlimDX Sample (demonstrating DX11), except in IronPython this time. This will be in the SlimDX samples sometime soon! import [...]]]></description>
			<content:encoded><![CDATA[<p>I generally don&#8217;t post huge code dumps, mainly because I find them more annoying and less helpful than some books/authors might. But you know, I&#8217;ve been playing with IronPython/SlimDX recently and decided to do up another SlimDX Sample (demonstrating DX11), except in IronPython this time. This will be in the SlimDX samples sometime soon!</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> clr
clr.<span style="color: black;">AddReference</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'System.Windows.Forms'</span><span style="color: black;">&#41;</span>
clr.<span style="color: black;">AddReference</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'System.Drawing'</span><span style="color: black;">&#41;</span>
clr.<span style="color: black;">AddReference</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'SlimDX'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> System <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
<span style="color: #ff7700;font-weight:bold;">from</span> System.<span style="color: black;">Drawing</span> <span style="color: #ff7700;font-weight:bold;">import</span> Size
<span style="color: #ff7700;font-weight:bold;">from</span> System.<span style="color: black;">Windows</span>.<span style="color: black;">Forms</span> <span style="color: #ff7700;font-weight:bold;">import</span> Form, Application, MessageBox, FormBorderStyle
<span style="color: #ff7700;font-weight:bold;">from</span> SlimDX <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
<span style="color: #ff7700;font-weight:bold;">from</span> SlimDX.<span style="color: black;">Direct3D11</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
<span style="color: #ff7700;font-weight:bold;">from</span> SlimDX.<span style="color: black;">DXGI</span> <span style="color: #ff7700;font-weight:bold;">import</span> SwapChainDescription, SwapChainFlags, ModeDescription, SampleDescription, Usage, SwapEffect, Format, PresentFlags, Factory, WindowAssociationFlags
<span style="color: #ff7700;font-weight:bold;">from</span> SlimDX.<span style="color: black;">D3DCompiler</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
<span style="color: #ff7700;font-weight:bold;">from</span> SlimDX.<span style="color: black;">Windows</span> <span style="color: #ff7700;font-weight:bold;">import</span> MessagePump
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> GameObject:
    <span style="color: #ff7700;font-weight:bold;">def</span> Render<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">pass</span>
    <span style="color: #ff7700;font-weight:bold;">def</span> Tick<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">pass</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> GraphicsDevice<span style="color: black;">&#40;</span>IDisposable<span style="color: black;">&#41;</span>:
    Context = <span style="color: #008000;">property</span><span style="color: black;">&#40;</span><span style="color: #ff7700;font-weight:bold;">lambda</span> <span style="color: #008000;">self</span>: <span style="color: #008000;">self</span>.<span style="color: black;">context</span><span style="color: black;">&#41;</span>
    Device = <span style="color: #008000;">property</span><span style="color: black;">&#40;</span><span style="color: #ff7700;font-weight:bold;">lambda</span> <span style="color: #008000;">self</span>: <span style="color: #008000;">self</span>.<span style="color: black;">device</span><span style="color: black;">&#41;</span>
    SwapChain = <span style="color: #008000;">property</span><span style="color: black;">&#40;</span><span style="color: #ff7700;font-weight:bold;">lambda</span> <span style="color: #008000;">self</span>: <span style="color: #008000;">self</span>.<span style="color: black;">swapChain</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, control, fullscreen<span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">fullscreen</span> = fullscreen
        <span style="color: #008000;">self</span>.<span style="color: black;">control</span> = control
&nbsp;
        control.<span style="color: black;">Resize</span> += <span style="color: #ff7700;font-weight:bold;">lambda</span> sender, args: <span style="color: #008000;">self</span>.<span style="color: black;">Resize</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        swapChainDesc = <span style="color: #008000;">self</span>.<span style="color: black;">CreateSwapChainDescription</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
        success,<span style="color: #008000;">self</span>.<span style="color: black;">device</span>,<span style="color: #008000;">self</span>.<span style="color: black;">swapChain</span> = Device.<span style="color: black;">CreateWithSwapChain</span><span style="color: black;">&#40;</span>DriverType.<span style="color: black;">Hardware</span>, DeviceCreationFlags.<span style="color: #008000;">None</span>, Array<span style="color: black;">&#91;</span>FeatureLevel<span style="color: black;">&#93;</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>FeatureLevel.<span style="color: black;">Level_11_0</span>, FeatureLevel.<span style="color: black;">Level_10_1</span>, FeatureLevel.<span style="color: black;">Level_10_0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>, swapChainDesc<span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">context</span> = <span style="color: #008000;">self</span>.<span style="color: black;">Device</span>.<span style="color: black;">ImmediateContext</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">with</span> <span style="color: #008000;">self</span>.<span style="color: black;">swapChain</span>.<span style="color: black;">GetParent</span><span style="color: black;">&#91;</span>Factory<span style="color: black;">&#93;</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> factory:
            factory.<span style="color: black;">SetWindowAssociation</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">control</span>.<span style="color: black;">Handle</span>, WindowAssociationFlags.<span style="color: black;">IgnoreAll</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">with</span> Resource.<span style="color: black;">FromSwapChain</span><span style="color: black;">&#91;</span>Texture2D<span style="color: black;">&#93;</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">swapChain</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> backBuffer:
            <span style="color: #008000;">self</span>.<span style="color: black;">backBufferRTV</span> = RenderTargetView<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">Device</span>, backBuffer<span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: black;">Resize</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>        
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> CreateSwapChainDescription<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        swapChainDesc = SwapChainDescription<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        swapChainDesc.<span style="color: black;">IsWindowed</span> = <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">self</span>.<span style="color: black;">fullscreen</span>
        swapChainDesc.<span style="color: black;">BufferCount</span> = <span style="color: #ff4500;">1</span>
        swapChainDesc.<span style="color: black;">ModeDescription</span> = ModeDescription<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">control</span>.<span style="color: black;">ClientSize</span>.<span style="color: black;">Width</span>, <span style="color: #008000;">self</span>.<span style="color: black;">control</span>.<span style="color: black;">ClientSize</span>.<span style="color: black;">Height</span>, Rational<span style="color: black;">&#40;</span><span style="color: #ff4500;">60</span>, <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>, Format.<span style="color: black;">R8G8B8A8_UNorm</span><span style="color: black;">&#41;</span>
        swapChainDesc.<span style="color: black;">Flags</span> = SwapChainFlags.<span style="color: #008000;">None</span>
        swapChainDesc.<span style="color: black;">SwapEffect</span> = SwapEffect.<span style="color: black;">Discard</span>
        swapChainDesc.<span style="color: black;">Usage</span> = Usage.<span style="color: black;">RenderTargetOutput</span>
        swapChainDesc.<span style="color: black;">SampleDescription</span> = SampleDescription<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
        swapChainDesc.<span style="color: black;">OutputHandle</span> = <span style="color: #008000;">self</span>.<span style="color: black;">control</span>.<span style="color: black;">Handle</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> swapChainDesc
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> Resize<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">Context</span>.<span style="color: black;">ClearState</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">backBufferRTV</span>.<span style="color: black;">Dispose</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">swapChain</span>.<span style="color: black;">ResizeBuffers</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>, <span style="color: #008000;">self</span>.<span style="color: black;">control</span>.<span style="color: black;">ClientSize</span>.<span style="color: black;">Width</span>, <span style="color: #008000;">self</span>.<span style="color: black;">control</span>.<span style="color: black;">ClientSize</span>.<span style="color: black;">Height</span>, Format.<span style="color: black;">R8G8B8A8_UNorm</span>, SwapChainFlags.<span style="color: #008000;">None</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">with</span> Resource.<span style="color: black;">FromSwapChain</span><span style="color: black;">&#91;</span>Texture2D<span style="color: black;">&#93;</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">swapChain</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> backBuffer:
            <span style="color: #008000;">self</span>.<span style="color: black;">backBufferRTV</span> = RenderTargetView<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">Device</span>, backBuffer<span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">Context</span>.<span style="color: black;">Rasterizer</span>.<span style="color: black;">SetViewports</span><span style="color: black;">&#40;</span>Viewport<span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">0</span>, <span style="color: #008000;">self</span>.<span style="color: black;">control</span>.<span style="color: black;">ClientSize</span>.<span style="color: black;">Width</span>, <span style="color: #008000;">self</span>.<span style="color: black;">control</span>.<span style="color: black;">ClientSize</span>.<span style="color: black;">Height</span>, <span style="color: #ff4500;">0.0</span>, <span style="color: #ff4500;">1.0</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> BeginRender<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">Context</span>.<span style="color: black;">ClearRenderTargetView</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">backBufferRTV</span>, Color4<span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">Context</span>.<span style="color: black;">OutputMerger</span>.<span style="color: black;">SetTargets</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">backBufferRTV</span><span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> EndRender<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">swapChain</span>.<span style="color: black;">Present</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, PresentFlags.<span style="color: #008000;">None</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> Dispose<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">backBufferRTV</span>.<span style="color: black;">Dispose</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">swapChain</span>.<span style="color: black;">Dispose</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">device</span>.<span style="color: black;">Dispose</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> TriangleObject<span style="color: black;">&#40;</span>GameObject<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, game<span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">game</span> = game
        device = game.<span style="color: black;">GraphicsDevice</span>.<span style="color: black;">Device</span>
        context = game.<span style="color: black;">GraphicsDevice</span>.<span style="color: black;">Context</span>
&nbsp;
        err = clr.<span style="color: black;">Reference</span><span style="color: black;">&#91;</span><span style="color: #008000;">str</span><span style="color: black;">&#93;</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">with</span> ShaderBytecode.<span style="color: black;">CompileFromFile</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;SimpleTriangle10.fx&quot;</span>, <span style="color: #483d8b;">&quot;fx_5_0&quot;</span>, ShaderFlags.<span style="color: #008000;">None</span>, EffectFlags.<span style="color: #008000;">None</span>, <span style="color: #008000;">None</span>, <span style="color: #008000;">None</span>, err<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> shaderByteCode:
            <span style="color: #008000;">self</span>.<span style="color: black;">effect</span> = Effect<span style="color: black;">&#40;</span>device, shaderByteCode<span style="color: black;">&#41;</span>
&nbsp;
        shaderTechnique = <span style="color: #008000;">self</span>.<span style="color: black;">effect</span>.<span style="color: black;">GetTechniqueByIndex</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">shaderPass</span> = shaderTechnique.<span style="color: black;">GetPassByIndex</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
&nbsp;
        sig = <span style="color: #008000;">self</span>.<span style="color: black;">shaderPass</span>.<span style="color: black;">Description</span>.<span style="color: black;">Signature</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">inputLayout</span> = InputLayout<span style="color: black;">&#40;</span>device, sig, Array<span style="color: black;">&#91;</span>InputElement<span style="color: black;">&#93;</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>InputElement<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;POSITION&quot;</span>, <span style="color: #ff4500;">0</span>, Format.<span style="color: black;">R32G32B32A32_Float</span>, <span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>, InputElement<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;COLOR&quot;</span>, <span style="color: #ff4500;">0</span>, Format.<span style="color: black;">R32G32B32A32_Float</span>, <span style="color: #ff4500;">16</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
        bufferDesc = BufferDescription<span style="color: black;">&#40;</span><span style="color: #ff4500;">3</span> <span style="color: #66cc66;">*</span> <span style="color: #ff4500;">32</span>, ResourceUsage.<span style="color: black;">Dynamic</span>, BindFlags.<span style="color: black;">VertexBuffer</span>, CpuAccessFlags.<span style="color: black;">Write</span>, ResourceOptionFlags.<span style="color: #008000;">None</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">vertexBuffer</span> = Buffer<span style="color: black;">&#40;</span>device, bufferDesc<span style="color: black;">&#41;</span>
&nbsp;
        stream = context.<span style="color: black;">MapSubresource</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">vertexBuffer</span>, <span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">3</span> <span style="color: #66cc66;">*</span> <span style="color: #ff4500;">32</span>, MapMode.<span style="color: black;">WriteDiscard</span>, MapFlags.<span style="color: #008000;">None</span><span style="color: black;">&#41;</span>.<span style="color: black;">Data</span>
        data = Array<span style="color: black;">&#91;</span>Vector4<span style="color: black;">&#93;</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>
            Vector4<span style="color: black;">&#40;</span><span style="color: #ff4500;">0.0</span>, <span style="color: #ff4500;">0.5</span>, <span style="color: #ff4500;">0.5</span>, <span style="color: #ff4500;">1.0</span><span style="color: black;">&#41;</span>, Vector4<span style="color: black;">&#40;</span><span style="color: #ff4500;">1.0</span>, <span style="color: #ff4500;">0.0</span>, <span style="color: #ff4500;">0.0</span>, <span style="color: #ff4500;">1.0</span><span style="color: black;">&#41;</span>,
            Vector4<span style="color: black;">&#40;</span><span style="color: #ff4500;">0.5</span>, -<span style="color: #ff4500;">0.5</span>, <span style="color: #ff4500;">0.5</span>, <span style="color: #ff4500;">1.0</span><span style="color: black;">&#41;</span>, Vector4<span style="color: black;">&#40;</span><span style="color: #ff4500;">0.0</span>, <span style="color: #ff4500;">1.0</span>, <span style="color: #ff4500;">0.0</span>, <span style="color: #ff4500;">1.0</span><span style="color: black;">&#41;</span>,
            Vector4<span style="color: black;">&#40;</span>-<span style="color: #ff4500;">0.5</span>, -<span style="color: #ff4500;">0.5</span>, <span style="color: #ff4500;">0.5</span>, <span style="color: #ff4500;">1.0</span><span style="color: black;">&#41;</span>, Vector4<span style="color: black;">&#40;</span><span style="color: #ff4500;">0.0</span>, <span style="color: #ff4500;">0.0</span>, <span style="color: #ff4500;">1.0</span>, <span style="color: #ff4500;">1.0</span><span style="color: black;">&#41;</span>
        <span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
        stream.<span style="color: black;">WriteRange</span><span style="color: black;">&#40;</span>data<span style="color: black;">&#41;</span>
        context.<span style="color: black;">UnmapSubresource</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">vertexBuffer</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> Render<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        context = <span style="color: #008000;">self</span>.<span style="color: black;">game</span>.<span style="color: black;">GraphicsDevice</span>.<span style="color: black;">Context</span>
        context.<span style="color: black;">InputAssembler</span>.<span style="color: black;">InputLayout</span> = <span style="color: #008000;">self</span>.<span style="color: black;">inputLayout</span>
        context.<span style="color: black;">InputAssembler</span>.<span style="color: black;">PrimitiveTopology</span> = PrimitiveTopology.<span style="color: black;">TriangleList</span>
        context.<span style="color: black;">InputAssembler</span>.<span style="color: black;">SetVertexBuffers</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, VertexBufferBinding<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">vertexBuffer</span>, <span style="color: #ff4500;">32</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">shaderPass</span>.<span style="color: black;">Apply</span><span style="color: black;">&#40;</span>context<span style="color: black;">&#41;</span>
        context.<span style="color: black;">Draw</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">3</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> Dispose<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">effect</span>.<span style="color: black;">Dispose</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">inputLayout</span>.<span style="color: black;">Dispose</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">vertexBuffer</span>.<span style="color: black;">Dispose</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> Game<span style="color: black;">&#40;</span>IDisposable<span style="color: black;">&#41;</span>:
    GraphicsDevice = <span style="color: #008000;">property</span><span style="color: black;">&#40;</span><span style="color: #ff7700;font-weight:bold;">lambda</span> <span style="color: #008000;">self</span>: <span style="color: #008000;">self</span>.<span style="color: black;">graphicsDevice</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, width, height, fullscreen = <span style="color: #008000;">False</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">fullscreen</span> = fullscreen
        <span style="color: #008000;">self</span>.<span style="color: black;">form</span> = GameForm<span style="color: black;">&#40;</span>width, height, fullscreen<span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">form</span>.<span style="color: black;">Visible</span> = <span style="color: #008000;">True</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">graphicsDevice</span> = GraphicsDevice<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">form</span>, <span style="color: #008000;">self</span>.<span style="color: black;">fullscreen</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">gameObjects</span> = <span style="color: black;">&#91;</span>TriangleObject<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> Run<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        Application.<span style="color: black;">Idle</span> += <span style="color: #008000;">self</span>.<span style="color: black;">OnIdle</span>
        Application.<span style="color: black;">Run</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">form</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> OnIdle<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, ea, sender<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">while</span> MessagePump.<span style="color: black;">IsApplicationIdle</span>:
            <span style="color: #008000;">self</span>.<span style="color: black;">Update</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
            <span style="color: #008000;">self</span>.<span style="color: black;">Render</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> Update<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">self</span>.<span style="color: black;">gameObjects</span>:
            i.<span style="color: black;">Tick</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> Render<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">GraphicsDevice</span>.<span style="color: black;">BeginRender</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">self</span>.<span style="color: black;">gameObjects</span>:
            i.<span style="color: black;">Render</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">GraphicsDevice</span>.<span style="color: black;">EndRender</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> Dispose<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">GraphicsDevice</span>.<span style="color: black;">Dispose</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">self</span>.<span style="color: black;">gameObjects</span>:
            <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #483d8b;">'Dispose'</span> <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">dir</span><span style="color: black;">&#40;</span>i<span style="color: black;">&#41;</span>:
                i.<span style="color: black;">Dispose</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">form</span>.<span style="color: black;">Dispose</span><span style="color: black;">&#40;</span><span style="color: #008000;">True</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> GameForm<span style="color: black;">&#40;</span>Form<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, width, height, fullscreen<span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">ClientSize</span> = Size<span style="color: black;">&#40;</span>width, height<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> fullscreen:
            <span style="color: #008000;">self</span>.<span style="color: black;">FormBorderStyle</span> = FormBorderStyle.<span style="color: #008000;">None</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
    <span style="color: #ff7700;font-weight:bold;">try</span>:
        <span style="color: #ff7700;font-weight:bold;">with</span> Game<span style="color: black;">&#40;</span><span style="color: #ff4500;">640</span>, <span style="color: #ff4500;">480</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> game:
            game.<span style="color: black;">Run</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">Exception</span> <span style="color: #ff7700;font-weight:bold;">as</span> e:
        MessageBox.<span style="color: black;">Show</span><span style="color: black;">&#40;</span>e.<span style="color: black;">ToString</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://scapecode.com/2010/08/building-a-slimdx-minitriangle-sample-with-direct3d11-and-ironpython/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I Love Python</title>
		<link>http://scapecode.com/2009/06/i-love-python/</link>
		<comments>http://scapecode.com/2009/06/i-love-python/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 19:33:35 +0000</pubDate>
		<dc:creator>Washu</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://scapecode.com/?p=7</guid>
		<description><![CDATA[I think one could say that I&#8217;m somewhat infatuated with Python. It&#8217;s a wonderful language really. The language is easy to use, powerful, and developing things in it gets done so much faster than in most other languages I&#8217;ve used. It&#8217;s also pretty trivial to pickup, and once you&#8217;re past the basic strangeness of white-spacing [...]]]></description>
			<content:encoded><![CDATA[<p>I think one could say that I&#8217;m somewhat infatuated with Python. It&#8217;s a wonderful language really. The language is easy to use, powerful, and developing things in it gets done so much faster than in most other languages I&#8217;ve used. It&#8217;s also pretty trivial to pickup, and once you&#8217;re past the basic strangeness of white-spacing based scope resolution, you quickly will find yourself making what would be severely complex applications in it with but a few lines.</p>
<p>Now, at this point, most people would be pointing out the functional origins of many of Python&#8217;s capabilities, and then point to the many functional languages that have many of the same capabilities. Or perhaps they would point to the dynamic typing, and how that makes development so much more flexible&#8230; a few would probably point out that many bugs won&#8217;t show up till compile-time that a statically typed language would find immediately.</p>
<p>But none of that really matters to me, because the biggest thing that I find with Python is that it encourages readable code. Now, we&#8217;re not talking C# readable code, which while it can be made readable still tends to be mixed in with a great deal of language jargon that can confuse the casual reader. Nor am I talking about C++ readable code, which just simply doesn&#8217;t exist. No, I&#8217;m talking about code that you can sit down, and almost read out loud in a sensible manner. Code that you can look at, and without having to filter out many of the little niggling bits, can simply understand what it does.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">items = <span style="color: black;">&#91;</span>
    <span style="color: black;">&#123;</span><span style="color: #483d8b;">'name'</span> : <span style="color: #483d8b;">&quot;Bronze Sword&quot;</span>, <span style="color: #483d8b;">'value'</span> : <span style="color: #ff4500;">50</span>, <span style="color: #483d8b;">'diceCount'</span> : <span style="color: #ff4500;">1</span>, <span style="color: #483d8b;">'diceSides'</span> : <span style="color: #ff4500;">4</span><span style="color: black;">&#125;</span>,
    <span style="color: black;">&#123;</span><span style="color: #483d8b;">'name'</span> : <span style="color: #483d8b;">&quot;Steel Sword&quot;</span>, <span style="color: #483d8b;">'value'</span> : <span style="color: #ff4500;">100</span>, <span style="color: #483d8b;">'diceCount'</span> : <span style="color: #ff4500;">2</span>, <span style="color: #483d8b;">'diceSides'</span> : <span style="color: #ff4500;">4</span><span style="color: black;">&#125;</span>,
    <span style="color: black;">&#123;</span><span style="color: #483d8b;">'name'</span> : <span style="color: #483d8b;">&quot;Adamantium Sword&quot;</span>, <span style="color: #483d8b;">'value'</span> : <span style="color: #ff4500;">200</span>, <span style="color: #483d8b;">'diceCount'</span> : <span style="color: #ff4500;">1</span>, <span style="color: #483d8b;">'diceSides'</span> : <span style="color: #ff4500;">10</span><span style="color: black;">&#125;</span>
<span style="color: black;">&#93;</span>
&nbsp;
result = <span style="color: black;">&#91;</span>item <span style="color: #ff7700;font-weight:bold;">for</span> item <span style="color: #ff7700;font-weight:bold;">in</span> items <span style="color: #ff7700;font-weight:bold;">if</span> item<span style="color: black;">&#91;</span><span style="color: #483d8b;">'value'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #ff4500;">50</span><span style="color: black;">&#93;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> result</pre></div></div>

<p>Now, looking over the above code what immediately comes to mind is that items is an array containing objects, with properties. Pretty cool in my opinion. A similar C# example could be done, but then you would have to rely on either an explicit Item object, anonymous types, or a dictionary of objects (which would involve typecasting, and other nasty behavior)&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Collections.Generic</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">using</span> <span style="color: #008080;">System.Linq</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">static</span> <span style="color: #FF0000;">class</span> Program <span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #0600FF;">void</span> <span style="color: #0600FF;">ForEach</span><span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span> IEnumerable<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span> cont, Action<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span> action<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
        <span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>var t <span style="color: #0600FF;">in</span> cont<span style="color: #000000;">&#41;</span>
            action<span style="color: #000000;">&#40;</span>t<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #0600FF;">static</span> <span style="color: #0600FF;">void</span> Main<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> args<span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
        var items <span style="color: #008000;">=</span> <span style="color: #008000;">new</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #008000;">new</span> <span style="color: #000000;">&#123;</span> Name <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Bronze Sword&quot;</span>, Value <span style="color: #008000;">=</span> <span style="color: #FF0000;">50</span>, DiceCount <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span>, DiceSides <span style="color: #008000;">=</span> <span style="color: #FF0000;">4</span> <span style="color: #000000;">&#125;</span>,
            <span style="color: #008000;">new</span> <span style="color: #000000;">&#123;</span>Name <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Steel Sword&quot;</span>, Value <span style="color: #008000;">=</span> <span style="color: #FF0000;">100</span>, DiceCount <span style="color: #008000;">=</span> <span style="color: #FF0000;">2</span>, DiceSides <span style="color: #008000;">=</span> <span style="color: #FF0000;">4</span><span style="color: #000000;">&#125;</span>,
            <span style="color: #008000;">new</span> <span style="color: #000000;">&#123;</span>Name <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;Adamantium Sword&quot;</span>, Value <span style="color: #008000;">=</span><span style="color: #FF0000;">200</span>, DiceCount <span style="color: #008000;">=</span> <span style="color: #FF0000;">1</span>, DiceSides <span style="color: #008000;">=</span> <span style="color: #FF0000;">10</span><span style="color: #000000;">&#125;</span>
        <span style="color: #000000;">&#125;</span><span style="color: #008000;">;</span>
&nbsp;
        var result <span style="color: #008000;">=</span> from item <span style="color: #0600FF;">in</span> items where item.<span style="color: #0000FF;">Value</span> <span style="color: #008000;">&gt;</span> <span style="color: #FF0000;">50</span> select item<span style="color: #008000;">;</span>
        result.<span style="color: #0600FF;">ForEach</span><span style="color: #000000;">&#40;</span>
            <span style="color: #000000;">&#40;</span>item<span style="color: #000000;">&#41;</span> <span style="color: #008000;">=&gt;</span>
                Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span>
                    <span style="color: #666666;">&quot;{{Name : {0}, Value : {1}, DiceCount : {2}, DiceSides : {3}}}&quot;</span>,
                    item.<span style="color: #0000FF;">Name</span>, item.<span style="color: #0000FF;">Value</span>, item.<span style="color: #0000FF;">DiceCount</span>, item.<span style="color: #0000FF;">DiceSides</span>
                <span style="color: #000000;">&#41;</span>
        <span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Now, think about how much longer that is. Heck, read through it a bit and try and easily understand it. It&#8217;s not that difficult to do, but you&#8217;re filtering out a lot of useless language garbage. Things like &#8220;new&#8221; or &#8220;var&#8221; just get in the way. Heck, look at what we had to do to easily print out the list in a single line! While we could have certainly embedded the foreach explicitly into the main function, the ability to apply that functionality to any query is just too useful to not define an extension method for it.</p>
<p>A C++ version, which I will not provide here, is even worse since it lacks many of the language niceties of C#. This means you end up spending more time doing all that lovely low down dirty work just to get a simple list of items to perform some queries on and then print out the results of.</p>
<p>But how does it encourage readability? Well, first and foremost, there&#8217;s the scoping. Since scoping is based on indentation, you have to make sure your code is properly indented. The worst experience one can have is to open someone&#8217;s source code and find a lack of, or haphazard indenting. It completely ruins the flow when reading the code. Then there&#8217;s the lack of keywords, which require you to interpret them within the context in which they are used, as some keywords in many languages behave differently depending on the context. A trivial example of this is new in C# when allocating a value type versus allocating a reference type. Last, but certainly not least, are all the libraries. These allow you to rapidly build entire applications without having to worry about all the low level nitty gritty stuff. You just get in there, and go.</p>
]]></content:encoded>
			<wfw:commentRss>http://scapecode.com/2009/06/i-love-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
