<?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>VertexPortus</title>
	<atom:link href="http://www.articstudios.com.br/blogs/portus/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.articstudios.com.br/blogs/portus</link>
	<description>Programação é arte</description>
	<lastBuildDate>Sun, 21 Mar 2010 18:34:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ponteiros para função</title>
		<link>http://www.articstudios.com.br/blogs/portus/2010/03/ponteiro-para-funcao/</link>
		<comments>http://www.articstudios.com.br/blogs/portus/2010/03/ponteiro-para-funcao/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 18:30:14 +0000</pubDate>
		<dc:creator>Daniel Alves</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://www.articstudios.com.br/blogs/portus/?p=67</guid>
		<description><![CDATA[Ponteiros para funções são uma funcionalidade da linguagem C/C++ que permite uma grande flexibilidade na criação de sistema dinâmicos. Neste artigo, irei explicar de forma simples, porém completa, a sintaxe e implementação de ponteiros para funções.

Uma função nada mais é, em sua essência, do que apenas um conjunto de instruções binárias em alguma posição de [...]]]></description>
			<content:encoded><![CDATA[<p>Ponteiros para funções são uma funcionalidade da linguagem C/C++ que permite uma grande flexibilidade na criação de sistema dinâmicos. Neste artigo, irei explicar de forma simples, porém completa, a sintaxe e implementação de ponteiros para funções.</p>
<p><span id="more-67"></span></p>
<p>Uma função nada mais é, em sua essência, do que apenas um conjunto de instruções binárias em alguma posição de memória. Sendo assim, então, o C/C++ permite você criar um ponteiro para uma função, que irá guardar o endereço de memória que poderá ser executada. Esse tipo de funcionalidade permite técnicas, como por exemplo, um sistema de eventos.</p>
<p>Antes de começar a demonstrar como usar ponteiros para funções, entendam que a sintaxe para trabalhar com eles é estranha, mas depois que se entende a técnica, fica simples entender.</p>
<p>Como C (e C++) é uma linguagem fortemente tipada, nenhum dado pode ser de tipo desconhecido para ser utilizado, e funções não são exceção. Alem disso, funções tem o agravante de não apenas terem um tipo de dado de retorno, mas também a possibilidade de receber n parametros. Então, ao declarar um ponteiro para função, é necessário declarar  seu tipo de retorno e os tipos de todos os parametros. Voce consegue o endereço de uma função usando o nome da função, sem o operador (). O uso do operador &amp; antes do nome da função é, neste caso, opcional. Porém, mais além iremos ver um caso onde o seu uso é obrigatório. Vamos ver alguns exemplos:</p>
<p><code> </code></p>
<p><code> </code></p>
<p><code></p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #666666;">// exemplo de função 01</span>
<span style="color: #0000ff;">void</span> vazia<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><span style="color: #008000;">&#125;</span>
<span style="color: #666666;">// seu ponteiro e atribuiçao</span>
<span style="color: #0000ff;">void</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>fpVazia<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">void</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">=</span> vazia<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">// exemplo de função 02</span>
<span style="color: #0000ff;">int</span> numero<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
<span style="color: #666666;">// seu ponteiro e atribuição</span>
<span style="color: #0000ff;">int</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>fpNumero<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">void</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">=</span> numero<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">// exemplo de função 03</span>
<span style="color: #0000ff;">int</span> soma<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a, <span style="color: #0000ff;">int</span> b<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">return</span> a<span style="color: #000040;">+</span>b<span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
<span style="color: #666666;">// seu ponteiro e atribuição</span>
<span style="color: #0000ff;">int</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>fpSoma<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span>,<span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">=</span> soma<span style="color: #008080;">;</span></pre></div></div>

<p></code></p>
<p>Como disse anteriormente, a sintaxe é ligeiramente estranha, mas funciona. Temos aqui três ponteiros para funções. Agora para executar cada uma dessas, usamos a seguinte sintaxe:</p>
<p><code> </code></p>
<p><code> </code></p>
<p><code></p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #666666;">// executa cada uma das funções anteriores</span>
fpVazia<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> num <span style="color: #000080;">=</span> fpNumero<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">// num recebe 2</span>
<span style="color: #0000ff;">int</span> res <span style="color: #000080;">=</span> fpSoma<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">2</span>,<span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">// res recebe 4</span>
&nbsp;
<span style="color: #666666;">// outras formas de executar:</span>
<span style="color: #008000;">&#40;</span>fpVazia<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>fpVazia<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span></pre></div></div>

<p></code></p>
<p>Repare que eu coloquei algumas outras formas de executar no final do código. Embora todas elas funcionem na maioria dos compiladores, alguns compiladores mais antigos podem dar problema com um ou outro formato. Além disso, para executar ponteiros para métodos (funções membros de classe), a sintaxe para chamadas de função vai ficar menos flexivel.</p>
<p>Para facilitar um pouco a sintaxe de uso de ponteiros para função, podemos utilizar o operador <span style="color: #3366ff;">typedef</span>, como exemplifico a seguir:</p>
<p><code> </code></p>
<p><code> </code></p>
<p><code></p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #666666;">// exemplo de declaração sem typedef</span>
<span style="color: #0000ff;">void</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>funcExemplo<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span>,<span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span> fpExemplo<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">// agora usando typedef para criar</span>
<span style="color: #666666;">// um tipo de dado novo que é um</span>
<span style="color: #666666;">// ponteiro para função</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">void</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>funcExemplo<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span>,<span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #666666;">// declarando o ponteiro</span>
funcExemplo fpExemplo<span style="color: #008080;">;</span></pre></div></div>

<p></code></p>
<p>Muito mais simples, não? se você pensar na questão de passar ponteiros para função como parametro de outra função, esta facilidade de criar um tipos de dados deixa o código muito mais limpo e facil de entender.</p>
<p>Ponteiros para funções são muito úteis, mas você deve estar pensando &#8220;posso usar isso para criar ponteiros de métodos de classes?&#8221;. A resposta carrega junto uma explicação:</p>
<p>Um método estático de uma classe é exatamente igual a uma função comum &#8211; apenas que o compilador mantém controle sobre as permissões de acesso. Um método não-estático, porém, tem uma diferença. O formato de chamada (<span style="color: #3366ff;">_thiscall</span>), envia internamente um parametro extra &#8211; um ponteiro para o objeto no qual o método está sendo chamado. Disso podemos tirar que, além de sabermos o endereço dessa função, é necessário um ponteiro (ou referência) para o objeto do qual queremos chamar o método. Aqui está o exemplo de um ponteiro para um método:</p>
<p><code> </code></p>
<p><code> </code></p>
<p><code></p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #666666;">// vamos ver uma classe</span>
<span style="color: #0000ff;">class</span> A
<span style="color: #008000;">&#123;</span>
<span style="color: #0000ff;">private</span><span style="color: #008080;">:</span>
   <span style="color: #0000ff;">int</span> _a<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
   A<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#41;</span> <span style="color: #008080;">:</span> _a<span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><span style="color: #008000;">&#125;</span>
   ~A<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><span style="color: #008000;">&#125;</span>
&nbsp;
   <span style="color: #666666;">// método a ser executado</span>
   <span style="color: #0000ff;">int</span> soma<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> b<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> <span style="color: #0000ff;">return</span> _a <span style="color: #000040;">+</span> b<span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">// criação do tipo ponteiro 'funcSoma'</span>
<span style="color: #0000ff;">typedef</span> <span style="color: #0000ff;">int</span> <span style="color: #008000;">&#40;</span>A<span style="color: #008080;">::</span><span style="color: #000040;">*</span>funcSoma<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">// criando ponteiro</span>
funcSoma fpSoma <span style="color: #000080;">=</span> <span style="color: #000040;">&amp;</span>A<span style="color: #008080;">::</span><span style="color: #007788;">soma</span><span style="color: #008080;">;</span>
<span style="color: #666666;">// nao podemos chamar a função sem um</span>
<span style="color: #666666;">// objeto do tipo A</span>
A a<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
A p <span style="color: #000080;">=</span> <span style="color: #0000dd;">new</span> A<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #666666;">// chamando função pelo ponteiro</span>
<span style="color: #0000ff;">int</span> res<span style="color: #008080;">;</span>
res <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>a.<span style="color: #000040;">*</span>fpSoma<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">// res recebe 4</span>
res <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span><span style="color: #000040;">*</span>fpSoma<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">// res recebe 5</span></pre></div></div>

<p></code></p>
<p>Repare em algumas peculariedades. Primeiro, inicializamos o ponteiro passando o caminho do método (<span style="color: #3366ff;">&amp;A::soma</span> &#8211; diz q soma pertence à classe A. Neste caso, o uso do operador <span style="color: #3366ff;">&amp;</span> passa a ser obrigatório). Como disse anteriormente, chamar o método sem uma referência a um objeto da classe é impossível, então criamos os objetos &#8216;a&#8217; e &#8216;p&#8217; do tipo A. Finalmente, vemos os métodos sendo executados. Repare bem na sintaxe: voce usa o próprio objeto para chamar o método. No caso, dependendo do tipo (se é uma referência ou um ponteiro), usamos um operador diferente. <span style="color: #3366ff;">.*</span> ou <span style="color: #3366ff;">-&gt;*</span>.</p>
<p>Num próximo post, irei descrever a implementação de uma classe genérica (usanto templates) que facilita a manipulação de ponteiros para métodos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.articstudios.com.br/blogs/portus/2010/03/ponteiro-para-funcao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Básico de renderização 3D em XNA &#8211; Parte 01</title>
		<link>http://www.articstudios.com.br/blogs/portus/2009/11/basico-de-renderizacao-3d-em-xna-parte-01/</link>
		<comments>http://www.articstudios.com.br/blogs/portus/2009/11/basico-de-renderizacao-3d-em-xna-parte-01/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 10:32:03 +0000</pubDate>
		<dc:creator>Daniel Alves</dc:creator>
				<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://www.articstudios.com.br/blogs/portus/?p=43</guid>
		<description><![CDATA[Aqui inicio uma série de artigos voltados para renderização 3D em XNA. Começando com os básicos de gráfico 3D, conversarei sobre geração de malha procedural, assim como renderização de modelos exportados de programas de modelagem, texturização por programação e shaders.
Decidi utilizar XNA como base para estes artigos pela sua facilidade de utilização, além de permitir [...]]]></description>
			<content:encoded><![CDATA[<p>Aqui inicio uma série de artigos voltados para renderização 3D em XNA. Começando com os básicos de gráfico 3D, conversarei sobre geração de malha procedural, assim como renderização de modelos exportados de programas de modelagem, texturização por programação e shaders.</p>
<p>Decidi utilizar XNA como base para estes artigos pela sua facilidade de utilização, além de permitir uma fácil adaptação para C++ com DirectX.</p>
<p>Neste artigo, estarei explicando o básico de renderização 3D, gerando triângulos por programação e renderizando-os com cores básicas e com texturas.</p>
<p><span id="more-43"></span></p>
<p>A pedidos de alguns leitores, estou editando o artigo para colocar aqui uma pequena explicação sobre o que é XNA, e onde pode baixar.</p>
<p>O XNA é uma framework dotNET da Microsoft. É uma biblioteca de classes e ferramentas para desenvolver facilmente jogos para Windows e XBox 360 utilizando a linguagem C#, mas mantendo uma estrutura semelhante ao DirectX (tanto que sempre aconselho começar com XNA para quem está querendo começar a estudar DirectX). Você pode fazer download do Visual C# 2008 Express Edition e do XNA Game Studio 3.1 <a title="Creator's Club - Downloads" href="http://creators.xna.com/en-US/downloads" target="_blank">AQUI</a>. Ambas as ferramentas são grátis.</p>
<p>Antes de começar o artigo, é importante salientar que o XNA necessita de shaders para renderizar qualquer coisa na tela. Como iremos aprender sobre shaders em outros artigos mais adiante, cada artigo anterior a esse estudo irei preparar um arquivo de shader específico para podermos trabalhar tranquilamente cada assunto tratato. O arquivo de shader para este artigo pode ser <a title="Shader básico Artigo 01" href="http://articstudios.com.br/blogs/portus/post-dls/shaders/article01.fx" target="_blank">BAIXADO AQUI</a>.</p>
<p>Comece por criar um projeto XNA Windows Game 3.1.</p>
<p>Para utilizar o arquivo de shader, é preciso fazer o seguinte. Primeiro, copie o arquivo de shader .fx para a pasta Content, dentro da pasta do seu projeto XNA. Em seguida, importe-o para o projeto dentro do Visual C#, clicando com o butão direito na pasta Content, e escolhendo Import Existing Item. Agora, temos algumas linhas de código necessárias para utilizar esse shader. No arquivo de código Game1.cs, logo em cima ao código criando o <span style="color: #3366ff;">GraphicsDeviceManager </span>e o <span style="color: #3366ff;">SpriteBatch</span>, coloque o seguinte código:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">Effect effect<span style="color: #008000;">;</span></pre></div></div>

<p>Dentro do método <span style="color: #3366ff;">LoadContent()</span>, coloque:<br />
<code><br />
</code></p>
<p><code></p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">effect <span style="color: #008000;">=</span> Content.<span style="color: #0000FF;">Load</span><span style="color: #008000;">&lt;</span>Effect<span style="color: #008000;">&gt;</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;article01&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p></code><br />
E finalmente, precisamos criar a base de renderização com esse shader, com o seguinte código dentro do método <span style="color: #3366ff;">Draw()</span>:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">// limpar a tela com a cor preta</span>
GraphicsDevice.<span style="color: #0000FF;">Clear</span><span style="color: #000000;">&#40;</span>Color.<span style="color: #0000FF;">Black</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// setando o efeito padrão - explicarei melhor esta parte mais tarde</span>
effect.<span style="color: #0000FF;">CurrentTechnique</span> <span style="color: #008000;">=</span> effect.<span style="color: #0000FF;">Techniques</span><span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span><span style="color: #008000;">;</span>
<span style="color: #008080; font-style: italic;">// aqui começa a renderização utilizando este shader</span>
effect.<span style="color: #0000FF;">Begin</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>EffectPass pass <span style="color: #0600FF;">in</span> effect.<span style="color: #0000FF;">CurrentTechnique</span>.<span style="color: #0000FF;">Passes</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   <span style="color: #008080; font-style: italic;">// cada shader pode ter vários passos - explicarei mais tarde também</span>
   pass.<span style="color: #0000FF;">Begin</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
   <span style="color: #008080; font-style: italic;">// AQUI IREMOS COLOCAR NOSSO CÓDIGO DE RENDERIZAÇÃO DE MALHA</span>
&nbsp;
   <span style="color: #008080; font-style: italic;">// termina o passo</span>
   pass.<span style="color: #0000FF;">End</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #008080; font-style: italic;">// termina renderização com este shader</span>
effect.<span style="color: #0000FF;">End</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Pronto, temos agora a base necessária para renderizar o nosso exercício de hoje.</p>
<p>Qualquer objeto renderizado em 3D é representado por um conjunto de triângulos. Cada triângulo é (logicamente) definido por 3 pontos, que chamaremos de vértices. Cada vértice, por sua vez, tem um conjunto de características definidas, como por exemplo posição espacial ou cor.</p>
<p>No XNA, existem algumas estruturas prontas com definições de vértice, então iremos utilizar essa facilidade para começar. A estrutura <span style="color: #3366ff;">VertexPositionColor</span> define um vértice com posição e cor. Para definir um triângulo, necessitamos de 3 vértices, então vamos criar um array e um método para inicializar nosso array:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">VertexPositionColor<span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> vertices<span style="color: #008000;">;</span>
<span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> CriaVertices<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   vertices <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> VertexPositionColor<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">3</span><span style="color: #000000;">&#93;</span><span style="color: #008000;">;</span>
&nbsp;
   vertices<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector3<span style="color: #000000;">&#40;</span><span style="color: #008000;">-</span>0.5f, <span style="color: #008000;">-</span>0.5f, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
   vertices<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Color</span> <span style="color: #008000;">=</span> Color.<span style="color: #0000FF;">Green</span><span style="color: #008000;">;</span>
   vertices<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">1</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector3<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>, 0.5f, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
   vertices<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">1</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Color</span> <span style="color: #008000;">=</span> Color.<span style="color: #0000FF;">Yellow</span><span style="color: #008000;">;</span>
   vertices<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">2</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Position</span> <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Vector3<span style="color: #000000;">&#40;</span>0.5f, <span style="color: #008000;">-</span>0.5f, <span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
   vertices<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">2</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">Color</span> <span style="color: #008000;">=</span> Color.<span style="color: #0000FF;">Red</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Repare que eu estou colocando as coordenadas diretamente no espaço 2D da tela, assim não existe necessidade de transformar de 3D para 2D (iremos ver isso mais tarde). Agora que temos nosso triângulo definido, precisamos ainda definir o formato dos nossos vértices, para que a placa de vídeo saiba utilizar os dados do nosso array. Para isso, utilizamos a estrutura <span style="color: #3366ff;">VertexDeclaration</span>, da seguinte forma:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">VertexDeclaration vertexDecl<span style="color: #008000;">;</span>
<span style="color: #0600FF;">private</span> <span style="color: #0600FF;">void</span> CriaDecl<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   vertexDecl <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> VertexDeclaration<span style="color: #000000;">&#40;</span>GraphicsDevice, VertexPositionColor.<span style="color: #0000FF;">VertexElements</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Agora, basta chamar estes dois métodos para inicializar nossos dados e estamos prontos para renderizar. Coloque a chamada para ambos os métodos criados dentro do método <span style="color: #3366ff;">LoadContent()</span>, logo após a leitura do <span style="color: #3366ff;">Effect</span>. Basta colocarmos o código que vai enviar os dados para a a placa de vídeo e renderizá-los, dentro do loop <span style="color: #3366ff;">Begin()</span>..<span style="color: #3366ff;">End()</span> dos passos do nosso shader, no método <span style="color: #3366ff;">Draw()</span></p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">// aqui setamos a declaração do formato de vertices no directx</span>
GraphicsDevice.<span style="color: #0000FF;">VertexDeclaration</span> <span style="color: #008000;">=</span> vertexDecl<span style="color: #008000;">;</span>
<span style="color: #008080; font-style: italic;">// aqui mandamos o directX desenhar nosso triângulo</span>
GraphicsDevice.<span style="color: #0000FF;">DrawUserPrimitives</span><span style="color: #000000;">&#40;</span>PrimitiveType.<span style="color: #0000FF;">TriangleList</span>, vertices, <span style="color: #FF0000;">0</span>, <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Rode a aplicação e você deverá ver um triângulo desenhado na tela, onde cada ponta tem uma cor diferente. Vamos entender um pouco mais sobre este último pedaço de código.</p>
<p>A primeira linha passa a declaração do formato dos vértices. O array de vértices, ao ser passado para a GPU, é transformado num stream de bytes, e é esta declaração que vai definir o tamanho nesse stream de cada vértice, assim o que cada dado significa, e sem isto a GPU não saberia o que fazer com os dados.<br />
A segunda linha manda desenhar nosso triângulo, e recebe 4 parametros:</p>
<ul>
<li>O primeiro parâmetro, <span style="color: #3366ff;">PrimitiveType.TriangleList</span>, define o processo seguido para renderizar os triângulos. Neste caso, <span style="color: #3366ff;">TriangleList</span>, significa que a GPU irá utilizar o stream como uma lista de vértices, desenhando triângulos utilizando 3 vértices por vez. Outras opções utilizam a stream de jeitos diferentes, e iremos estudar essas técnicas mais tarde;</li>
<li>O segundo parâmetro é o nosso array de vértices, que passamos aqui para o DirectX mandar para a placa de vídeo;</li>
<li>O terceiro parâmetro é o vertexOffset. Basicamente, qual o índice do array que a GPU deve usar como primeiro vértice. No nosso caso, começamos no início do buffer, ou seja, índice 0;</li>
<li>Finalmente, o ultimo parâmetro define o número de triângulos a serem desenhados. Se quisermos aumentar este número, é necessário a criação de mais vértices no nosso array.</li>
</ul>
<p>Ok. Chegamos ao fim do nosso primeiro artigo sobre renderização 3D. No próximo artigo, iremos estudar como utilizar coordenadas 3D de mundo (para não ter que definir coordenadas 2D de tela diretamente nos vértices), e como transformar essas coordenadas 3D em 2D na tela.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.articstudios.com.br/blogs/portus/2009/11/basico-de-renderizacao-3d-em-xna-parte-01/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Curso GamesTotal</title>
		<link>http://www.articstudios.com.br/blogs/portus/2009/11/curso-gamestotal/</link>
		<comments>http://www.articstudios.com.br/blogs/portus/2009/11/curso-gamestotal/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 20:53:32 +0000</pubDate>
		<dc:creator>Daniel Alves</dc:creator>
				<category><![CDATA[Artic Studios]]></category>
		<category><![CDATA[Educação]]></category>
		<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://www.articstudios.com.br/blogs/portus/?p=28</guid>
		<description><![CDATA[Hoje estou anunciando o curso GamesTotal, que está em desenvolvimento pela Artic Studios, em parceria com o site de ensino à distância Luciano Augusto.
O curso é 100% online, com videoaulas e suporte através de um fórum com uma comunidade ativa, onde os professores estarão presentes para tirar duvidas e receber sugestões.

O GamesTotal visa ensinar todos [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje estou anunciando o curso GamesTotal, que está em desenvolvimento pela Artic Studios, em parceria com o site de ensino à distância <a title="Luciano Augusto EaD" href="http://www.lucianoaugusto.com.br" target="_blank">Luciano Augusto</a>.</p>
<p>O curso é 100% online, com videoaulas e suporte através de um fórum com uma comunidade ativa, onde os professores estarão presentes para tirar duvidas e receber sugestões.<br />
<span id="more-28"></span></p>
<p>O GamesTotal visa ensinar todos os conceitos necessários para um profissional da área de desenvolvimento de jogos. Embora cada profissional do mercado tenha sua especialidade (programação, animação, modelagem, texturização, game design, level design, etc), é importante saber os conceitos essenciais de todas as áreas, e portanto o curso GamesTotal é generalista nesse ponto. A Artic Studios está trabalhando em outros cursos mais especificos, que irão se aprofundar em todas as áreas, partindo dos conceitos básicos passados neste curso.</p>
<p>O preço será de R$ 650,00 após o lançamento oficial dia 15 de Dezembro, mas até o dia de lançamento estamos fazendo pré-venda com 40% de desconto. É possivel pagar à vista ou parcelado em até 18x. Mais informações no <a title="Curso GamesTotal" href="http://lucianoaugusto.com.br/cursos/gamestotal/" target="_blank">HotSite do curso</a>.</p>
<p>Então, serão abordadas todas as áreas importantes do desenvolvimento de um jogo digital:</p>
<ul>
<li>Game Design
<ul>
<li>Aqui o aluno irá aprender como desenvolver um Game Design Document, assim como desenvolver mecânicas de jogo, criação de personagem, enredo e roteiro;</li>
</ul>
</li>
<li> Game Art
<ul>
<li>Depois do desenvolvimento de todo o game design do jogo, é necessário o desenvolvimento do visual baseado nesse design document. Aqui iremos aprender como transformar os conceitos definidos no GDD, e criar todo o conteúdo gráfico do jogo, desde concept até modelagem 3D, texturização e animação;</li>
</ul>
</li>
<li> Programação
<ul>
<li>Ter todo o game design e arte do jogo definidos e criados não é o bastante. É com programação que irão aprender como dar vida ao jogo.</li>
</ul>
</li>
</ul>
<p><a href="http://lucianoaugusto.com.br/cursos/gamestotal/" target="_blank">Mais informações no site oficial</a></p>
<p>Posso responder dúvidas deixadas nos comentários, msn, skype ou gtalk.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.articstudios.com.br/blogs/portus/2009/11/curso-gamestotal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Game Developers Conference 2010</title>
		<link>http://www.articstudios.com.br/blogs/portus/2009/11/game-developers-conference-2010/</link>
		<comments>http://www.articstudios.com.br/blogs/portus/2009/11/game-developers-conference-2010/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 15:15:09 +0000</pubDate>
		<dc:creator>Daniel Alves</dc:creator>
				<category><![CDATA[Eventos]]></category>

		<guid isPermaLink="false">http://www.articstudios.com.br/blogs/portus/?p=23</guid>
		<description><![CDATA[Um dos maiores eventos de desenvolvimento de jogos estará de volta em 2010! Veja aqui informações sobre o evento, a cidade de San Francisco e algumas curiosidades.

Em 2008, no meu antigo blog VertexBuffer, coloquei algumas informações sobre a GDC de San Francisco, Califórnia. Neste post, estarei explicando de novo todos os detalhes sobre este evento [...]]]></description>
			<content:encoded><![CDATA[<p>Um dos maiores eventos de desenvolvimento de jogos estará de volta em 2010! Veja aqui informações sobre o evento, a cidade de San Francisco e algumas curiosidades.</p>
<p><span id="more-23"></span></p>
<p>Em 2008, no meu antigo blog VertexBuffer, coloquei algumas informações sobre a GDC de San Francisco, Califórnia. Neste post, estarei explicando de novo todos os detalhes sobre este evento importante do mercado de jogos internacional.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">A GDC acontece no Moscone Center em São Francisco, Califórnia. Em termos de valores, não fica uma viagem barata para brasileiros (mesmo com a estabilização do dólar). No entando, se existe a possibilidade de ir, não perca esta oportunidade de aprender com grandes profissionais e aumentar sua rede de contatos. Andei fazendo algumas sondagens de preços de passagens, e vi preços que variam de R$ 2800 a R$ 4000 (de São Paulo a San Francisco, com variadas escalas e tempo de vôo). É bom lembrar que quanto mais próximo ao dia do embarque, mais caras ficam as passagens. Em relação a hospedagem, os hoteis pertos do Moscone Center são ligeiramente caros, e vão de US$ 120 a US$ 250 pernoite, sendo que alguns tem quartos com duas camas, podendo assim ser divididos. Existem também alguns albergues na região, onde você pode conseguir quartos por valores perto de US$ 500 por semana.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Além de viagem e hospedagem, existe também o gasto com a entrada para o evento. A compra antecipada (este ano até 4 de Fevereiro 2010) garante um desconto de 35%. Existem vários passes, de diferentes acessos a certas partes do evento e, consequentemente, de diferentes preços. Ainda não foi divulgado no site oficial os preços dos passes do próximo ano, mas vou falar os preços que eu paguei na minha última participação. O passe mais completo é o &#8220;All Access Pass&#8221;. Com ele é permitido participar de todos os tutoriais, eventos, palestras, keynotes, etc. Este passe costuma ficar por volta de US$2000. Alguns outros passes que costumam ter:</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Main Conference Pass &#8211; US$1400. Permite acesso às palestras, pavilhões de exposição, keynotes e eventos dos 3 últimos dias do evento (os tutoriais e workshops, além de alguns outros eventos, acontecem nos 2 primeiros dias);</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">GDC Mobile Pass  - US$1050. Passe especial para participantes focados em desenvolvimento para mobile;</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Expo Pass &#8211; US$200. Passe apenas para os 3 dias de exposição. Sem acesso às palestras, keynotes, etc.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Todo ano aparecem e somem tipos de passes, então é importante ficar ligado no site oficial, e ao abrir as informações de passes, ler atentamente todas as possibilidades para encontrar a mais apropriada. Os preços do evento incluem café da manhã e almoço nos dias correspondentes.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Falando um pouco da conferência agora. A GDC é na verdade o conjunto de vários eventos simultâneos. Segunda e terça são voltados para negócios e profissionais. Envolvem vários ’summits’ (pequenos eventos), com palestras e atividades específicas a certas áreas do desenvolvimento de games. Por exemplo, a GDC Mobile, voltada para desenvolvimento de jogos para portáteis, Independent Game Summit, voltado para a comunidade de desenvolvedores independentes, etc. Acontecem também sessões de tutoriais e workshops de durações que vão de 1 hora até os 2 dias.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">De quarta até sexta, a chamada “main conference” acontece. Nesses dias, a feira com os stands das empresas e universidades é aberta aos participantes. É muito interessante tirar um tempo para passear calmamente pela exposição. Em outro bloco, existe outra “expo” com stands – o Pavilhão de Carreira. Ali, é possivel conversar com representantes de RH, e em alguns casos até representantes das diferentes áreas das empresas.Ao mesmo tempo que existem os dois pavilhões de exposição e carreira (acredite, acontece tanta coisa ao mesmo tempo que é facil se sentir perdido), acontecem as palestras. São um volume monstruoso de palestras , geralmente com várias da mesma área (programação, audio, design gráfico, game design, etc) acontecendo simultaneamente. E acredite, vocÊ terá que escolher e não será facil.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Acontecem também keynotes (alguém importante dando sua visão), que eu recomendo (dependendo do palestrante). Eu tive a honra de participar da keynote do Ray Kurzweil sobre os proximos 50 anos da indústria de jogos. Além disso, todo ano tem o evento/festa de premiação da IGF (Independent Game Awards), que reconhece os melhores jogos independentes do ano e as premiações para os melhores jogos “mainstream” do ano – a Game Developer’s Choice Awards.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Além de tudo isso, existem diversas festas e eventos acontecento. Desde a tradicional festa da IGDA (International Game Developers Association), até diversas festas patrocinadas pelas grandes empresas como Microsoft, Sony, etc, e incluindo também um campeonato beneficiente de Pocker. Muito importante estar atendo à programação do evento para saber escolher o que quer fazer. A cidade de San Francisco oferece também entretenimento e lugares interessantes para visitar.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Dentro do Moscone Center costuma ser montada uma pequena loja oficial do evento, vendendo desde camisetas até livros, DVDs, camisas, bolsas, canetas, esqueiros e o que mais você possa imaginar. As coisas não são muito caras, vale a pena comprar algumas lembrancinhas pra fazer inveja aos seus colegas e amigos. Tem também todo ano uma espécie de jogo interno ao evento que qualquer um pode participar. É um jogo focado em networking e me falaram que é bem interessante, porém nunca participei.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Agora deixo aqui algumas dicas e informações:</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Informações:</p>
<ul style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 30px; color: #697c83; padding: 0px;">
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">site oficial: <a title="Game Developers Conference - Official Website" href="http://www.gdconf.com" target="_blank">www.gdconf.com</a> (o site costuma ser atualizado mais perto do final do ano, é bom ficar ligado)</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Data: 9 a 13 Março 2009</li>
</ul>
<ul style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 30px; color: #697c83; padding: 0px;">
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Local: Moscone Center, San Francisco – CA</li>
</ul>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Algumas dicas:</p>
<ul style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 30px; color: #697c83; padding: 0px;">
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Tente chegar um ou dois dias antes do evento. É bom poder descansar, se habituar ao clima/horário, e encontrar seus contatos pré-estabelecidos antes do evento (caso combine algo) ou mesmo passear um pouco pela cidade;</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">O mesmo para o retorno. Tente passar pelo menos um dia inteiro na cidade pós-evento. Viajar para tão longe e não conhecer a cidade decentemente é triste. De preferência e se tiver condições, pegue uma semana a mais porque realmente vale muito a pena;</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Participe do máximo de festas e eventos noturnos da conferência. Se possível, vá com alguém (ou sozinho mesmo, acredite você consegue puxar papo fácil com pessoal de games) a algum dos bares da região. Um bar bastante badalado pelo pessoal da GDC é no W Hotel (é do lado do Moscone Center). É uma ótima hora para socializar e fazer networking. Além do mais, é bom dar aquela relaxada tomando uma boa cerveja. Não precisa gastar muito para beber e comer bem;</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Não perca nenhum horário de palestra. Se realmente não tem nenhuma palestra interessante em algum horário (o que vai ser raro), aproveite esse tempo para fazer algo como visitar o pavilhão de exposição;</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Seja simpático e comunicativo. Todo mundo ali está com espírito de festa e diversão, quase certeza que, se você puxar papo com o pessoal na sua mesa de almoço ou na descida da escada rolante, a pessoa vai conversar com você tranquilamente, e talvez até trocar cartões de visita;</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Leve cartões de visita. Se você trabalha em uma empresa, peça para seu chefe. Se recusarem ou simplesmente você ainda não trabalha/não quer levar cartão da empresa – faça um pessoal. Um cartão apresentável com nome, profissão, email e telefone é obrigatório num evento deste porte;</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Se pretende procurar oportunidades, leve um currículo padrão internacional. Não precisa levar impresso, existem alguns locais baratos para impressão por lá. Se não pretende procurar oportunidade, leve seu currículo mesmo assim – nunca se sabe o que pode acontecer;</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Tire o pó do seu inglês. É sério, se está na area de desenvolvimento de jogos, inglês é obrigatório. Se você enrola no inglês, dê um jeito de desenferrujar. Se não sabe, tá em boa hora de aprender;</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Leve dinheiro extra ou cartão de crédito com um bom limite. Você vai querer sair, comprar bugiganga, etc – se você for de grana contada vai perder oportunidade de se divertir melhor, e quem sabe de passar na BestBuy comprar aquela placa de vídeo ou então na Apple Store comprar seu iPod Touch ou MacBook (tem uma AppleStore a duas quadras do Moscone Center);</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Ao se registrar no evento, você ganha uma entrada para o site de relacionamento do evento (MyGDC). Entre nele, use bastante, tente descubrir pessoas com interesses parecidos e puxe papo. O networking pode começar mesmo antes de ir!!</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Se você tiver conhecidos pelo evento, tente saber que palestras eles vão participar. Não é muito interessante você ir em uma mesma palestra que um conhecido seu – muito melhor vocês combinarem de cada um ir em uma palestra diferente, e depois trocar figurinha;</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">Leve (ou compre por lá) uma camera digital. Documentar sua viagem é muito importante;</li>
<li style="padding-top: 2px; padding-right: 0px; padding-bottom: 2px; padding-left: 0px; margin: 0px;">No evento você ganha uma sacola com presentinhos, folhetos e outras coisas interessantes e úteis para o evento e depois. Não se acanhe de pegar o bloco e caneta que vem dentro e de anotar bastante durante as palestras. Sua memória pode ser infalível mas depois de dois dias durmindo 3~4 horas com palestras durante o dia e cerveja de noite, ela pode começar a lhe faltar.</li>
</ul>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Se tiver dúvidas, quiser conversar sobre a GDC por msn/gtalk/email, ou quiser mais informações também é benvindo a colocar comentários ou me procurar.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 15px; margin-left: 0px; text-align: left; padding: 0px;">Abraços pessoal!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.articstudios.com.br/blogs/portus/2009/11/game-developers-conference-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Novo blog de gamedev &#8211; Vertex Portus</title>
		<link>http://www.articstudios.com.br/blogs/portus/2009/11/novo-blog-de-gamedev-vertex-portus/</link>
		<comments>http://www.articstudios.com.br/blogs/portus/2009/11/novo-blog-de-gamedev-vertex-portus/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 13:42:13 +0000</pubDate>
		<dc:creator>Daniel Alves</dc:creator>
				<category><![CDATA[Artic Studios]]></category>

		<guid isPermaLink="false">http://www.articstudios.com.br/blogs/portus/?p=20</guid>
		<description><![CDATA[Olá pessoal. Alguns de vocês devem me conhecer do meu velho blog VertexBuffer. Com a criação da Artic Studios, se inicia uma nova etapa e, portanto, decidi voltar a escrever.
Então estou desativando o velho VertexBuffer e criando este novo blog, que terá bastantes informações, dicas, tutoriais e artigos sobre o mundo de desenvolvimento de jogos [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal. Alguns de vocês devem me conhecer do meu velho blog VertexBuffer. Com a criação da Artic Studios, se inicia uma nova etapa e, portanto, decidi voltar a escrever.</p>
<p>Então estou desativando o velho VertexBuffer e criando este novo blog, que terá bastantes informações, dicas, tutoriais e artigos sobre o mundo de desenvolvimento de jogos digitais. Espero que todos fiquem bastante satisfeitos com o resultado!</p>
<p>Um abraço para todos vocês!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.articstudios.com.br/blogs/portus/2009/11/novo-blog-de-gamedev-vertex-portus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
