<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-38354121</id><updated>2012-02-11T09:55:57.962-02:00</updated><category term='C#'/><category term='C++'/><category term='AJAX'/><category term='JQuery'/><category term='Matemática'/><category term='newbie game engine'/><category term='Open Dynamics Engine'/><category term='SSE'/><category term='ASP.NET'/><category term='BLA BLA BLA'/><category term='OpenGL'/><category term='humor'/><title type='text'>ArmaZen de idéias</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-38354121.post-6256674537489233099</id><published>2011-02-24T16:25:00.001-03:00</published><updated>2011-02-24T16:34:17.293-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matemática'/><title type='text'>Física dos Veículos:  Parte 1 Aceleração</title><content type='html'>&lt;div class="MsoNormal"&gt;Estou estudando a física dos veículos aplicada a jogos, e achei diversos trabalhos interessantes na área é um assunto bem vasto e nesta parte vamos tratar apenas da aceleração longitudinal e o tutorial de base que eu estou seguindo é &lt;a href="http://www.asawicki.info/Mirror/Car%20Physics%20for%20Games/Car%20Physics%20for%20Games.html"&gt;este&lt;/a&gt; &lt;/div&gt;&lt;div class="MsoNormal"&gt;Então vamos lá, temos diversas forças atuando no veiculo e agora vamos tratar da força aplicada pelo motor até as rodas (estou desconsiderando a transmissão) isso ficará para o futuro, vamos chamar essa força &lt;b&gt;F&lt;/b&gt;engine. Depois vamos considerar a resistência do vento ela é definida por algumas constantes mágicas e a resistência do ar definida na Dinâmica dos fluidos, então temos:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;&lt;b&gt;F&lt;/b&gt;drag = 0.5 * &lt;b&gt;Cd&lt;/b&gt; * &lt;b&gt;S&lt;/b&gt; * &lt;b&gt;rho&lt;/b&gt; * (&lt;b&gt;v&lt;/b&gt;*&lt;b&gt;v&lt;/b&gt;)&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Onde &lt;b&gt;Cd &lt;/b&gt;= 0.30&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;S &lt;/b&gt;é a área frontal do veiculo aqui definimos como 2.2&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;rho &lt;/b&gt;é a Resistência do ar que é de 1.29&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;v&lt;/b&gt; é a velocidade do veiculo,&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;F&lt;/b&gt;drag é aplicada aposta a direção do veiculo então temos&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;F&lt;/b&gt;drag = -&lt;b&gt;u&lt;/b&gt; * &lt;b&gt;F&lt;/b&gt;drag&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Onde &lt;b&gt;u &lt;/b&gt;é a direção do veiculo&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Temos também a &lt;b&gt;F&lt;/b&gt;rr que é a resistência do solo (fricção das rodas) que é definida por:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;F&lt;/b&gt;rr = -u * Crr * &lt;b&gt;v&lt;/b&gt; * |&lt;b&gt;v&lt;/b&gt;|&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Cdrag = 0.5 * &lt;b&gt;Cd&lt;/b&gt; * &lt;b&gt;S&lt;/b&gt; * &lt;b&gt;rho&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Crr = 30 * Cdrag&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span lang="EN-US"&gt;F&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt;rr = -u * Crr&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Considerando essas forças atuando no veículo fica desta maneira&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span lang="EN-US"&gt;F&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt;long = &lt;b&gt;F&lt;/b&gt;engine + &lt;b&gt;F&lt;/b&gt;drag + &lt;b&gt;F&lt;/b&gt;rr&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Lembrando que segundo Newton&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;b&gt;v&lt;/b&gt; = &lt;b&gt;v&lt;/b&gt; + &lt;b&gt;dt&lt;/b&gt; * &lt;b&gt;a&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;&lt;span lang="EN-US"&gt;a&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt; = &lt;b&gt;F&lt;/b&gt; / &lt;b&gt;M&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Fiz a integração deste calculo no FreeMat&amp;nbsp; (Equivalente Open Source do MatLab) o resultado de &lt;b&gt;v &lt;/b&gt;é:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-jxS4klMBB9I/TWayr67v3gI/AAAAAAAACV4/O1x-WKA6T9g/s1600/Accell.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="228" src="http://2.bp.blogspot.com/-jxS4klMBB9I/TWayr67v3gI/AAAAAAAACV4/O1x-WKA6T9g/s400/Accell.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-PQFOKj6k5vY/TWavyvc6xlI/AAAAAAAACV0/nThN8p0CX9I/s1600/Accell.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;Perceba que em determinado ponto como as forças estão interrelacionadas, elas se mantén constantes, segue o código:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;l = 100&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;t = [1:l]; %Array de Tempo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;v = [1:l]; %Array de Velocidade&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;u = 1; %Direção do veiculo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;rho = 1.29; %resistencia do veloar (Dinamica dos Fluidos)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;a = 1; %Aceleração&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Cd = 0.30; %Constante de Resistencia do Ar&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;S = 2.2; % Constante de Largurado Veiculo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Fengine = 450; % Força do Motor&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;tAmount =1; %Posição do Acelerador em porcentagem&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;M = 1000 % Massa do Veiculo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Fd = [1:l];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Fr = [1:l];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;for (i=2:l);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;dt = (t(i) - t(i-1)); &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;vt = v(i-1) + (dt * a); %integração da Velocidade&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Fdrag = (0.5 * Cd * S * rho * (vt*vt)); % Resistencia do Vento&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Cdrag = 0.5 * Cd * S * rho; %Constante de Resistencia da Solo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Crr = 30*Cdrag; %Resistencia do Vento&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Fdrag = -u * Fdrag; %Forca da Resistencia do Vento&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Frr = -u * Crr * vt * sqrt(vt); % Forca da Resistencia do Solo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Fe = u*tAmount*Fengine; %Forca do Motor&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;F = Fe + Fdrag+ Frr; %Calculo das forças do Veiculo&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;a = F / M; %Calculo da Aceleracao&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;v(i) = vt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Fd(i) = Fdrag*-1;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;Fr(i) = Frr*-1;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;plot(t,v)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;xlabel('Velocidade');&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6;"&gt;ylabel('Tempo');&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6; line-height: 115%;"&gt;title('Aceleração Longitudional');&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: #a6a6a6; line-height: 115%;"&gt;&amp;nbsp;&lt;span style="color: black;"&gt;&lt;span style="font-size: small;"&gt;Na próxima parte vamos estudar as transmissões (Marchas) o RPM e as Rodas, e vamos integrar a Simulação na Open Dynamics Engine, espero que tenha gostado e seu Feed Back vai ajudar nas próximas partes&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="color: #a6a6a6; line-height: 115%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-6256674537489233099?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/6256674537489233099/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=6256674537489233099&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/6256674537489233099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/6256674537489233099'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2011/02/fisica-dos-veiculos-parte-1-aceleracao.html' title='Física dos Veículos:  Parte 1 Aceleração'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-jxS4klMBB9I/TWayr67v3gI/AAAAAAAACV4/O1x-WKA6T9g/s72-c/Accell.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-2463183915348641701</id><published>2011-02-14T13:16:00.001-02:00</published><updated>2011-02-14T13:17:02.294-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matemática'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Rotação  com a classe de Matrizes C++</title><content type='html'>&lt;div class="MsoNormal"&gt;Boa tarde pessoal&amp;nbsp; a um bom tempo trabalho em uma classe de manipulação de matrizes, até o momento só implemente a cópia de matrizes e o operador Igual (=) e a multiplicação (*),&lt;/div&gt;&lt;div class="MsoNormal"&gt;Na classe a métodos que cria matrizes em torno do eixo X, Y&amp;nbsp; e Z, na Engine o Z aponta para cima no caso para setar a posição da câmera fica desta maneira&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;glMatrixMode(GL_MODELVIEW);&lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: x-small;"&gt;glLoadIdentity();&lt;br /&gt;Matrix rz,ry,rx,mm;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: x-small;"&gt;rz.RotZ(90); &lt;br /&gt;ry.RotY(90); &lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: x-small;"&gt;rx.RotY(-68);&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;mm.setIdentity(); &lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: x-small;"&gt;mm = ry * rz *rx;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-size: x-small;"&gt;glMultMatrixf(mm.m);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;glTranslatef(6.78,18.78,-5);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;O Resultado é este:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-t2_fEV9-QrU/TVlF9jghvOI/AAAAAAAACVY/RA1mUmzp8IQ/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="312" src="http://3.bp.blogspot.com/-t2_fEV9-QrU/TVlF9jghvOI/AAAAAAAACVY/RA1mUmzp8IQ/s400/7.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;  &lt;/div&gt;&lt;div class="MsoNormal"&gt;Segue abaixo as classes de Matrizes&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;//Matrix.h&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;# include "vec3d.h"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;class Matrix&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;public:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; float m[16];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; Matrix();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; void setIdentity();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; void RotX(float a);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; void RotY(float a);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; void RotZ(float a);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; Matrix&amp;amp; operator*(const Matrix&amp;amp; mat);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; Matrix&amp;amp; operator=(const Matrix&amp;amp; mat);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;//Matrix operator+(Matrix&amp;amp; mat);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; //Matrix operator-(Matrix&amp;amp; mat);&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;};&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;//Matrix.cpp&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;#include &lt;gl gl.h=""&gt;&lt;/gl&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;#define M(x,y) (y*4+x)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;* Classe para Manipulação de matrizes&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;Matrix::Matrix()&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;setIdentity();&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;* seta a matrix como identidade&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;* |1 0 0 0|&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;* |0 1 0 0|&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;* |0 0 1 0|&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;* |0 0 0 1|&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;void Matrix::setIdentity()&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;m[0]&amp;nbsp; = 1.0f;&amp;nbsp; m[1]&amp;nbsp; = 0.0f; m[2]&amp;nbsp; = 0.0f; m[3]&amp;nbsp; = 0.0f;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;span lang="EN-US"&gt;m[4]&amp;nbsp; = 0.0f;&amp;nbsp; m[5]&amp;nbsp; = 1.0f; m[6]&amp;nbsp; = 0.0f; m[7]&amp;nbsp; = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;m[8]&amp;nbsp; = 0.0f;&amp;nbsp; m[9]&amp;nbsp; = 0.0f; m[10] = 1.0f; m[11] = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&lt;/span&gt;m[12] = 0.0f; m[13]&amp;nbsp; = 0.0f; m[14] = 0.0f; m[15] = 1.0f;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;* Multiplica a Matrix por um vetor 3x1&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;span lang="EN-US"&gt;*/&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;vec3d vecbymat(vec3d vec, Matrix mat)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; vec3d r;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; r.x = mat.m[0] * vec.x + mat.m[1]&amp;nbsp; * vec.y + mat.m[2]&amp;nbsp;&amp;nbsp;&amp;nbsp; * vec.z + mat.m[3];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; r.y = mat.m[4] * vec.x + mat.m[5]&amp;nbsp; * vec.y + mat.m[6]&amp;nbsp;&amp;nbsp;&amp;nbsp; * vec.z + mat.m[7];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; r.z = mat.m[8] * vec.x + mat.m[9]&amp;nbsp; * vec.y + mat.m[10]&amp;nbsp;&amp;nbsp; * vec.z + mat.m[11];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; return r;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;Matrix&amp;amp; Matrix::operator*(const Matrix&amp;amp; mat)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float _m[16];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i = 0; i &amp;lt;4;i++)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int j = 0; j&amp;lt;4; j++)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float sum = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int k=0;k&amp;lt;4;k++)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum += this-&amp;gt;m[i*4+k] * mat.m[k*4+j];&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _m[i*4+j] = sum;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp; memcpy(this-&amp;gt;m,_m,sizeof(float)*16);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return *this;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;Matrix&amp;amp; Matrix::operator=(const Matrix&amp;amp; mat)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy(this-&amp;gt;m,mat.m,sizeof(float)*16);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return *this;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;void Matrix::RotX(float a)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float c = cosf(DEG2RAD(a));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float s = sinf(DEG2RAD(a));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[0]&amp;nbsp; = 1.0f;&amp;nbsp; m[1]&amp;nbsp; =&amp;nbsp; 0.0f; m[2]&amp;nbsp; = 0.0f; m[3]&amp;nbsp; = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[4]&amp;nbsp; = 0.0f;&amp;nbsp; m[5]&amp;nbsp; =&amp;nbsp; c;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[6]&amp;nbsp; = s;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[7]&amp;nbsp; = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[8]&amp;nbsp; = 0.0f;&amp;nbsp; m[9]&amp;nbsp; =&amp;nbsp; -s;&amp;nbsp;&amp;nbsp; m[10] = c;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[11] = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[12] = 0.0f; m[13]&amp;nbsp; =&amp;nbsp; 0.0f; m[14] = 0.0f; m[15] = 1.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;void Matrix::RotY(float a)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float c = cosf(DEG2RAD(a));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float s = sinf(DEG2RAD(a));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;m[0]&amp;nbsp; = c;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[1]&amp;nbsp;&amp;nbsp; = 0.0f; m[2] &amp;nbsp;=&amp;nbsp; -s; m[3]&amp;nbsp; = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;m[4]&amp;nbsp; = 0.0f;&amp;nbsp; m[5]&amp;nbsp;&amp;nbsp; = 1.0f; m[6]&amp;nbsp; =&amp;nbsp; 0.0f; m[7]&amp;nbsp; = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;m[8]&amp;nbsp; = s;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[9]&amp;nbsp;&amp;nbsp; = 0.0f; m[10] =&amp;nbsp; c; m[11] = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;m[12] = 0.0f;&amp;nbsp; m[13]&amp;nbsp; = 0.0f; m[14] =&amp;nbsp; 0.0f; m[15] = 1.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;void Matrix::RotZ(float a)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float c = cosf(DEG2RAD(a));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; float s = sinf(DEG2RAD(a));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; m[0]&amp;nbsp; = c;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[1]&amp;nbsp;&amp;nbsp; = s;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[2]&amp;nbsp; = 0.0f; m[3]&amp;nbsp; = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; m[4]&amp;nbsp; = -s;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[5]&amp;nbsp;&amp;nbsp; = c;&amp;nbsp;&amp;nbsp;&amp;nbsp; m[6]&amp;nbsp; = 0.0f; m[7]&amp;nbsp; = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; m[8]&amp;nbsp; = 0.0f;&amp;nbsp; m[9]&amp;nbsp;&amp;nbsp; = 0.0f; m[10] = 1.0f; m[11] = 0.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span lang="EN-US"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; m[12] = 0.0f;&amp;nbsp; m[13]&amp;nbsp; = 0.0f; m[14] = 0.0f; m[15] = 1.0f;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: #999999; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; line-height: normal;"&gt;&lt;span style="font-size: x-small;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal;"&gt;Só para refrescar a memória as matrizes de rotação seguem abaixo:&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--AhIznq4SfU/TVlG-TmPUwI/AAAAAAAACVg/Q0cmAVURrlg/s1600/rotation+matrix.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="395" src="http://4.bp.blogspot.com/--AhIznq4SfU/TVlG-TmPUwI/AAAAAAAACVg/Q0cmAVURrlg/s400/rotation+matrix.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-MNYcvpTtGwM/TVlGdoK5aHI/AAAAAAAACVc/AN4nNDXYtOA/s1600/matriz_r3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-2463183915348641701?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/2463183915348641701/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=2463183915348641701&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2463183915348641701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2463183915348641701'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2011/02/rotacao-com-classe-de-matrizes-c.html' title='Rotação  com a classe de Matrizes C++'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-t2_fEV9-QrU/TVlF9jghvOI/AAAAAAAACVY/RA1mUmzp8IQ/s72-c/7.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-3604468975269075646</id><published>2011-02-03T11:55:00.000-02:00</published><updated>2011-02-03T11:55:51.541-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Vertex Buffer Objects</title><content type='html'>Bom dia pessoal a grande novidade agora são os Vertex Buffer Objects, para quem não conhece os VBO é uma maneiro de enviar os arrays dos vetores, indices coordenadas de textura, normais para a memória da placa de video desta maneira não é necessário chamar o glVertex* para cada vetor diminuindo drasticamento o overred do programa desta maneira você envia os arrays para a placa de video uma única vez, e depois chama o&amp;nbsp; glDrawElements ele desenha seu mesh.&lt;br /&gt;&lt;br /&gt;a um vasto conteudo na internet sobre VBO, abaixo segue alguns links de referência:&lt;br /&gt;&lt;br /&gt;http://www.songho.ca/opengl/gl_vbo.html&lt;br /&gt;http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=45&lt;br /&gt;&lt;br /&gt;na engine consegui colocar o terreno no VBO, tive que fazer um re-build na estrutura basicamente por causa do tipo de dados, mas como tudo aqui é experimental ainda vão haver muitas modificações, os indices funcionão corretamente, só as coordenadas de textura que me deram uma bela surra.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Abaixo segue as respectivas classes e um exemplo de utilização:&lt;br /&gt;**** VertexBufferObject.h &lt;br /&gt;/**&lt;br /&gt;* @brief Gera Buffer Object&lt;br /&gt;**/&lt;br /&gt;&lt;br /&gt;class VertexBufferObject&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int vertexBuffId; //id do buffer vertices&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int indexBuffId; //id do buffer indices&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int normalBuffId; //id do buffer de normal&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int texBuffId; //id do buffer de coordenada de textura&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int numIndices;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float *vertices; // data dos vertices&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int *indexs; // data dos indicex&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float *normals; // data das normais&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float *texCoord; //data das coordenadas de Texturas&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VertexBufferObject();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @brief seta os vetices do VBO&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param vec3d *data ponteiro para os vertices&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param uint32 size tamanho do buffer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void setVertices(float *data,unsigned int size);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @brief seta os indices do VBO&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param uint32 *data ponteiro para os indices&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param uint32 size tamanho do buffer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void setIndexs(unsigned int *data,unsigned int size);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @brief seta as normais do VBO&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param vec3d *data ponteiro para os normais&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param uint32 size tamanho do buffer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void setNormals(float *data,unsigned int size);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @brief seta as coordenadas de textura VBO&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param TexCoord2 *data ponteiro para os vertices&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param uint32 size tamanho do buffer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void setTexCoords(float *data,unsigned int size);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @brief desenha o VBO&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void draw();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual ~VertexBufferObject();&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;***EOF***&lt;br /&gt;***VertexBufferObject.cpp****&lt;br /&gt;&lt;br /&gt;VertexBufferObject::VertexBufferObject()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vertexBuffId = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; indexBuffId = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; normalBuffId = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; texBuffId = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; numIndices = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vertices = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; indexs = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; normals = NULL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; texCoord = NULL;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void VertexBufferObject::setVertices(float *data,unsigned int size)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glGenBuffersARB( 1, &amp;amp;vertexBuffId);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBindBufferARB( GL_ARRAY_BUFFER_ARB, vertexBuffId );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vertices = data;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBufferDataARB( GL_ARRAY_BUFFER_ARB, size, data, GL_STATIC_DRAW_ARB );&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;void VertexBufferObject::setIndexs(unsigned int *data,unsigned int size)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glGenBuffersARB( 1, &amp;amp;indexBuffId );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBindBufferARB( GL_ELEMENT_ARRAY_BUFFER, indexBuffId );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; indexs = data;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; numIndices = (size/sizeof(unsigned int));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBufferDataARB( GL_ELEMENT_ARRAY_BUFFER, size, data, GL_STATIC_DRAW_ARB );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void VertexBufferObject::setNormals(float *data,unsigned int size)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glGenBuffersARB( 1, &amp;amp;normalBuffId );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBindBufferARB( GL_ARRAY_BUFFER_ARB, normalBuffId );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; normals = data;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBufferDataARB( GL_ARRAY_BUFFER_ARB, size, data, GL_STATIC_DRAW_ARB );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void VertexBufferObject::setTexCoords(float *data,unsigned int size)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glGenBuffersARB( 1, &amp;amp;texBuffId );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBindBufferARB( GL_ARRAY_BUFFER_ARB, texBuffId );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; texCoord = data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBufferDataARB( GL_ARRAY_BUFFER_ARB, size, data, GL_STATIC_DRAW_ARB );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void VertexBufferObject::draw()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (vertexBuffId != 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBindBufferARB(GL_ARRAY_BUFFER_ARB, vertexBuffId);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnableClientState(GL_VERTEX_ARRAY);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glVertexPointer(3,GL_FLOAT,0,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (indexBuffId != 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, indexBuffId);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnableClientState(GL_INDEX_ARRAY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glIndexPointer(GL_UNSIGNED_INT,0,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (normalBuffId != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnableClientState(GL_NORMAL_ARRAY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glNormalPointer(GL_FLOAT,0,normals);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (texBuffId != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glBindBufferARB(GL_ARRAY_BUFFER_ARB, texBuffId);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glEnableClientState(GL_TEXTURE_COORD_ARRAY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTexCoordPointer(2,GL_FLOAT,0,0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //glDrawArrays(GL_TRIANGLES,0,3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glDrawElements(GL_TRIANGLES,numIndices,GL_UNSIGNED_INT,0);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glDisableClientState(GL_VERTEX_ARRAY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glDisableClientState(GL_INDEX_ARRAY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glDisableClientState(GL_NORMAL_ARRAY);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glDisableClientState(GL_TEXTURE_COORD_ARRAY);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;VertexBufferObject::~VertexBufferObject()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;***EOF***&lt;br /&gt;&lt;br /&gt;Um exemplo da maneira que se possa utilizar segue abaixo isso vai desenhar um quadrado na tela.&lt;br /&gt;&lt;br /&gt;// vertex coords array&lt;br /&gt;GLfloat vertices[] =&lt;br /&gt;{1,-1,1, 1,1,1, -1,1,1,&lt;br /&gt;-1,-1,1&lt;br /&gt;&amp;nbsp;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;unsigned int indices[] = {0,1,2,2,3,0};&lt;br /&gt;&lt;br /&gt;float texCord[] = {0,1, 1,1, 1,0, 0,0, 0,1};&lt;br /&gt;&lt;br /&gt;VertexBufferObject *vbo = NULL;&lt;br /&gt;TexturePCX *tex = NULL;&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;int main(int argc,char **argv)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;... &lt;br /&gt;&amp;nbsp;...&lt;br /&gt;&lt;br /&gt;&amp;nbsp;vbo = new VertexBufferObject();&lt;br /&gt;&amp;nbsp;vbo-&amp;gt;setVertices(vertices,sizeof(vertices));&lt;br /&gt;&amp;nbsp;vbo-&amp;gt;setIndexs(indices,sizeof(indices));&lt;br /&gt;tex = new TexturePCX("storage//textures//ground.bmp"); //Não era pra carregar um bmp?&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void draw()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;...&lt;br /&gt;&amp;nbsp;glMatrixMode(GL_MODELVIEW);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glPushMatrix();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glLoadIdentity();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glTranslatef(0.0f,0.0f,-5.0f);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tex-&amp;gt;begin();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vbo-&amp;gt;draw();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tex-&amp;gt;end();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; glPopMatrix(); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;o resultado é o quadrado na tela você pode perceber que as texturas não estão aparecendo corretamente, você pode perceber tb o terreno sendo desenhado em um vbo, com o terreno coloquei um mapa de 512*512 sem sentir queda no FPS:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-kJRL_SSm6c/TUqw1R9cOGI/AAAAAAAACUk/TK-3gdTorF4/s1600/lunatics-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://4.bp.blogspot.com/_-kJRL_SSm6c/TUqw1R9cOGI/AAAAAAAACUk/TK-3gdTorF4/s400/lunatics-2.png" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;no gDEBugger você pode ver na placa de video como estão os dados:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt; &lt;/div&gt;Vertices:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-kJRL_SSm6c/TUqyTDiAzHI/AAAAAAAACUo/uVcXuXofyro/s1600/vbo1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="310" src="http://1.bp.blogspot.com/_-kJRL_SSm6c/TUqyTDiAzHI/AAAAAAAACUo/uVcXuXofyro/s400/vbo1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Indices:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-kJRL_SSm6c/TUqya5XQiMI/AAAAAAAACUs/5BMUPFq9n98/s1600/VBO2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_-kJRL_SSm6c/TUqya5XQiMI/AAAAAAAACUs/5BMUPFq9n98/s400/VBO2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;se você quiser ver os códigos completos da um pulo lá no svn:&lt;br /&gt;https://newbie-engine.svn.sourceforge.net/svnroot/newbie-engine&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-3604468975269075646?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/3604468975269075646/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=3604468975269075646&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3604468975269075646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3604468975269075646'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2011/02/vertex-buffer-objects.html' title='Vertex Buffer Objects'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-kJRL_SSm6c/TUqw1R9cOGI/AAAAAAAACUk/TK-3gdTorF4/s72-c/lunatics-2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-809777419293614589</id><published>2011-01-17T10:31:00.002-02:00</published><updated>2011-02-03T12:22:57.371-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Dynamics Engine'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Newbie Engine Updates</title><content type='html'>Nova versão saindo.&lt;br /&gt;Os próximos passos são estudar a Fisica Aplicada a Veiculos, achei uma referencia muito boa na &lt;a href="http://www.bandedsoftware.com/hexgear/vehicle.html"&gt;hexGear Engine&lt;/a&gt;&lt;br /&gt;Vou esmiuçar esse motor&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-kJRL_SSm6c/TTQ0_j7qOVI/AAAAAAAACT8/GTArHJiyVdA/s1600/lunatics.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="315" src="http://3.bp.blogspot.com/_-kJRL_SSm6c/TTQ0_j7qOVI/AAAAAAAACT8/GTArHJiyVdA/s400/lunatics.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-809777419293614589?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/809777419293614589/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=809777419293614589&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/809777419293614589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/809777419293614589'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2011/01/newbie-engine-updates.html' title='Newbie Engine Updates'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-kJRL_SSm6c/TTQ0_j7qOVI/AAAAAAAACT8/GTArHJiyVdA/s72-c/lunatics.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-1407269211437451661</id><published>2010-10-04T15:52:00.000-03:00</published><updated>2010-10-04T15:52:20.785-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><title type='text'>Newbie Game Engine Updates</title><content type='html'>Olá pessoal temos uma nova versão, creio que a simulação fisica esta totalmente estável e o mesh do terreno esta colidindo corretamente com os objetos, há uma demonstração com sen x cos, ainda não re-escrevi a parte relativa ao carregamento de um HeightMap através de uma imagem pretendo usar png, pois este tem 4 camadas e da pra colocar informações por escala nas 4 camadas, uma para Grandes Morros a nivel geral, e ir dimunuindo o nivel de detalhe gradativamente, mas antes de fazer isso tenho que dividir o mapa em setores e fazer um colling para assim trabalhar com a ordem de 1024x1024.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-kJRL_SSm6c/TKogomogTzI/AAAAAAAABHQ/4PkF2MWyTYQ/s1600/Lunatic_3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="313" src="http://1.bp.blogspot.com/_-kJRL_SSm6c/TKogomogTzI/AAAAAAAABHQ/4PkF2MWyTYQ/s400/Lunatic_3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;https://sourceforge.net/projects/newbie-engine/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;vou demorar um pouco pra &amp;nbsp;&lt;/code&gt; ataulizar o SVN mas o arquivo sf já foi atualizado&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-1407269211437451661?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/1407269211437451661/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=1407269211437451661&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/1407269211437451661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/1407269211437451661'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2010/10/newbie-game-engine-updates.html' title='Newbie Game Engine Updates'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-kJRL_SSm6c/TKogomogTzI/AAAAAAAABHQ/4PkF2MWyTYQ/s72-c/Lunatic_3.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-2384350749071109637</id><published>2010-07-14T12:20:00.000-03:00</published><updated>2010-07-14T12:20:15.901-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><title type='text'>Newbie Game Engine Updates</title><content type='html'>Olá pessoal não ainda estou vivo, e fiz uma atualização no SVN com a nova estrutura do projeto creio que agora só precise do SDL para compilar (./configure &amp;amp;&amp;amp; make) talvez tenha que usar o autotools também mas não fiz os tetes em outras plataformas.&lt;br /&gt;&lt;br /&gt;uma ataualização pendente que estou pra enviar é a correção do Mesh de Terreno agora colide com o Mapa normalmente, agora tenho que dividir os mapas em partes 32x32 para fazer um cooling e texturizar.&lt;br /&gt;&lt;br /&gt;bom pessoal por enquanto é isso, se puderem tentar compilar é uma boa.&lt;br /&gt;&lt;br /&gt;agora vou atualizar o arquivo do sf.&lt;br /&gt;&lt;br /&gt;o path do repositório é&lt;br /&gt;&lt;br /&gt;&lt;code&gt;svn co  https://newbie-engine.svn.sourceforge.net/svnroot/newbie-engine  newbie-engin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;https://sourceforge.net/projects/newbie-engine/&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;até mais pessoal.&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;/code&gt;&lt;br /&gt;&lt;code&gt;                     &lt;/code&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-2384350749071109637?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/2384350749071109637/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=2384350749071109637&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2384350749071109637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2384350749071109637'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2010/07/newbie-game-engine-updates.html' title='Newbie Game Engine Updates'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-5279942390180097817</id><published>2009-12-01T09:00:00.000-02:00</published><updated>2009-12-01T09:00:18.507-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BLA BLA BLA'/><title type='text'>Ausência</title><content type='html'>Olá pessoal, o Blog anda sem atualizações e me desculpo por, isso bom agora é fim de ano e estou descansando a medida do possivel, também estou com milhares de tarefas que estão sugando toda energia dispónivel.&lt;br /&gt;&lt;br /&gt;Quanto a Engine fiz uma motificação na hierarquia do projeto, a ODE está integrada ao projeto (na verdade adicionei o projeto no Makefile do ODE), também separei a engine do projeto do jogo, está separado desta maneira:&lt;br /&gt;&lt;br /&gt;- ODE / OPCODE&lt;br /&gt;- Newbie Game Engine (Código da Engine)&lt;br /&gt;- Lunatycs - (Projeto do Game das ultimas imagens)&lt;br /&gt;- Lab - (Usado para experiências).&lt;br /&gt;&lt;br /&gt;Só falta ativar a camera, ai faço as atualições, tb to querendo aprontar algo com Apache, MySQL e WebServices na parte Web.&lt;br /&gt;&lt;br /&gt;Um abraço e boas festas.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-5279942390180097817?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/5279942390180097817/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=5279942390180097817&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/5279942390180097817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/5279942390180097817'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/12/ausencia.html' title='Ausência'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-8047397173738510278</id><published>2009-10-22T11:50:00.002-02:00</published><updated>2009-10-22T11:57:38.045-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Will Code HTML For FOOD</title><content type='html'>Muito boa éssa :-)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-kJRL_SSm6c/SuBjFyYsccI/AAAAAAAAAdc/-IgIyy_hWqo/s1600-h/Will_code_HTML_for_food.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-kJRL_SSm6c/SuBjFyYsccI/AAAAAAAAAdc/-IgIyy_hWqo/s640/Will_code_HTML_for_food.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ai é só achar uma rede Wi-Fi:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-kJRL_SSm6c/SuBkqjYbWWI/AAAAAAAAAd8/9mlchh8yjJA/s1600-h/102_102-mendigo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-kJRL_SSm6c/SuBkqjYbWWI/AAAAAAAAAd8/9mlchh8yjJA/s640/102_102-mendigo.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;E pronto já posso virar Rippie.&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-8047397173738510278?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/8047397173738510278/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=8047397173738510278&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/8047397173738510278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/8047397173738510278'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/10/will-code-html-for-food.html' title='Will Code HTML For FOOD'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-kJRL_SSm6c/SuBjFyYsccI/AAAAAAAAAdc/-IgIyy_hWqo/s72-c/Will_code_HTML_for_food.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-7599868320928467075</id><published>2009-10-19T13:26:00.001-02:00</published><updated>2009-10-19T13:27:30.283-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><title type='text'>Newbie Game Engine Updates</title><content type='html'>Olá pessoal, um final de semana chuvoso no litoral acaba sendo bem produtivo, tenho já um roteiro para um game.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;Playground Lunático&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;Playground Lunático é um jogo 3D, onde você pode utilizar de vários veiculos como Tanques de guerra, tratores, jipes, entre diversos outros e interagir com um cenário gigante com diversos objetos interativos. o único objetivo é provocar a destruição e semear o caos.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&amp;nbsp;andei dando uma brisada no blender e modelei um veiculo:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;LN 1 Carnicinha:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-kJRL_SSm6c/StyCyqPm_RI/AAAAAAAAAc0/36Zyl8VrgTc/s1600-h/LN_1_Art.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-kJRL_SSm6c/StyCyqPm_RI/AAAAAAAAAc0/36Zyl8VrgTc/s400/LN_1_Art.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;A Lateral (Iluminação ruim):&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-kJRL_SSm6c/StyC-CuMCFI/AAAAAAAAAc8/gYFhC-dS7Oc/s1600-h/LN_1_Side.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-kJRL_SSm6c/StyC-CuMCFI/AAAAAAAAAc8/gYFhC-dS7Oc/s320/LN_1_Side.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;Como vemos temos um canhão, que terá elevação de 60º.&lt;br /&gt;&lt;br /&gt;Topo:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-kJRL_SSm6c/StyDN1Rcu6I/AAAAAAAAAdE/tb4QEJndNXA/s1600-h/LN_1_Top.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-kJRL_SSm6c/StyDN1Rcu6I/AAAAAAAAAdE/tb4QEJndNXA/s400/LN_1_Top.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;A base do canhão terá angulo de 180º.&lt;br /&gt;&lt;br /&gt;Me arriscando no blender:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_-kJRL_SSm6c/StyD1r8TWkI/AAAAAAAAAdM/NiN3AV4BYFc/s1600-h/LN_1_Carnicinha_model.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_-kJRL_SSm6c/StyD1r8TWkI/AAAAAAAAAdM/NiN3AV4BYFc/s400/LN_1_Carnicinha_model.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Ainda vai demorar umas semanas para fazer o LN 1 Carnicinha funcionar, mais valeu o exercicio criativo.&lt;br /&gt;&lt;br /&gt;Algum Game Design de plantã HELP-ME PLEASE.&lt;br /&gt;&lt;br /&gt;A ultima screen-shot da engine (ainda não atualizei o sf.net)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-kJRL_SSm6c/StyEVOuEPpI/AAAAAAAAAdU/G1JsOMqB2rc/s1600-h/Lunatic_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-kJRL_SSm6c/StyEVOuEPpI/AAAAAAAAAdU/G1JsOMqB2rc/s400/Lunatic_1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;um chão com uma textura (Grama ou Concreto)? e um Sky box vão dar um aspecto legal, a rampa vermelha é um modelo (.obj), creio que ja de para fazer cenários pequenos já que ainda não há nenhuma técnica de particionamento de espaço.&lt;br /&gt;&lt;br /&gt;gostei deste estilo de render vou dar uma explorada nele.&lt;br /&gt;&lt;br /&gt;Até mais pessoal&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-7599868320928467075?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/7599868320928467075/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=7599868320928467075&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/7599868320928467075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/7599868320928467075'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/10/newbie-game-engine-updates.html' title='Newbie Game Engine Updates'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-kJRL_SSm6c/StyCyqPm_RI/AAAAAAAAAc0/36Zyl8VrgTc/s72-c/LN_1_Art.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-874240288820143833</id><published>2009-10-12T12:51:00.002-03:00</published><updated>2009-10-12T12:52:46.341-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><title type='text'>Newbie Game Engine Veiculos.</title><content type='html'>Bom pessoal, consegui deixar a simulação fisica estável, e fiz até um cena maneirinha ora demonstrar.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-sQo9FcL4mw&amp;hl=pt-br&amp;fs=1&amp;rel=0&amp;color1=0x234900&amp;color2=0x4e9e00"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/-sQo9FcL4mw&amp;hl=pt-br&amp;fs=1&amp;rel=0&amp;color1=0x234900&amp;color2=0x4e9e00" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Você pode fazer o download do código no SF.&lt;br /&gt;só não atualizei o svn&lt;br /&gt;&lt;br /&gt;Até mais pessoal&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-874240288820143833?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/874240288820143833/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=874240288820143833&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/874240288820143833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/874240288820143833'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/10/newbie-game-engine-veiculos.html' title='Newbie Game Engine Veiculos.'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-4140192646197583985</id><published>2009-09-22T20:18:00.001-03:00</published><updated>2009-09-24T09:43:54.080-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSE'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Operações com vetor usando SSE Parte II</title><content type='html'>&lt;a href="http://newbie-x11.blogspot.com/2009/06/operacoes-com-vetor-usando-sse.html"&gt;Parte I&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora segue as quatro operações com vetores usando SSE foi usando g++ e o inline assembly, mais portar para outros compiladores é uma tarefa simples&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;**** vec4.hpp ****&lt;/span&gt;&lt;br /&gt;#ifndef __vec4hpp__&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;typedef struct vec4f&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;float x;&lt;br /&gt;&lt;br /&gt;float y;&lt;br /&gt;&lt;br /&gt;float z;&lt;br /&gt;&lt;br /&gt;float w;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;vec4f __attribute__ ((aligned(16)));&lt;br /&gt;&lt;br /&gt;// Soma de Vetores&lt;br /&gt;inline vec4f operator+(vec4f a, vec4f b)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;vec4f r;&lt;br /&gt;&lt;br /&gt;asm("movaps %[ina], %%xmm0 \n\t" \&lt;br /&gt;&lt;br /&gt;"movaps %[inb], %%xmm1 \n\t" \&lt;br /&gt;&lt;br /&gt;"addps %%xmm0, %%xmm1 \n\r" \&lt;br /&gt;&lt;br /&gt;"movaps %%xmm1, %[o] \n\t" \&lt;br /&gt;&lt;br /&gt;: [o] "=m"(r)&lt;br /&gt;&lt;br /&gt;: [ina] "m"(a), [inb] "m"(b));&lt;br /&gt;&lt;br /&gt;return r;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Subtração de Vetores&lt;br /&gt;inline vec4f operator-(vec4f a,vec4f b)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;vec4f r;&lt;br /&gt;&lt;br /&gt;asm("movaps %[ina], %%xmm0 \n\t" \&lt;br /&gt;&lt;br /&gt;"movaps %[inb], %%xmm1 \n\t" \&lt;br /&gt;&lt;br /&gt;"subps %%xmm1, %%xmm0 \n\r" \&lt;br /&gt;&lt;br /&gt;"movaps %%xmm0, %[o] \n\t" \&lt;br /&gt;&lt;br /&gt;: [o] "=m"(r)&lt;br /&gt;&lt;br /&gt;: [ina] "m"(a), [inb] "m"(b));&lt;br /&gt;&lt;br /&gt;return r;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Multiplicação de Vetores&lt;br /&gt;inline vec4f operator*(vec4f a,vec4f b)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;vec4f r;&lt;br /&gt;&lt;br /&gt;asm("movaps %[ina], %%xmm0 \n\t" \&lt;br /&gt;&lt;br /&gt;"movaps %[inb], %%xmm1 \n\t" \&lt;br /&gt;&lt;br /&gt;"mulps %%xmm0, %%xmm1 \n\r" \&lt;br /&gt;&lt;br /&gt;"movaps %%xmm1, %[o] \n\t" \&lt;br /&gt;&lt;br /&gt;: [o] "=m"(r)&lt;br /&gt;&lt;br /&gt;: [ina] "m"(a), [inb] "m"(b));&lt;br /&gt;&lt;br /&gt;return r;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Divisão de Vetores&lt;br /&gt;inline vec4f operator/(vec4f a,vec4f b)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;vec4f r;&lt;br /&gt;&lt;br /&gt;asm("movaps %[ina], %%xmm0 \n\t" \&lt;br /&gt;&lt;br /&gt;"movaps %[inb], %%xmm1 \n\t" \&lt;br /&gt;&lt;br /&gt;"divps %%xmm1, %%xmm0 \n\r" \&lt;br /&gt;&lt;br /&gt;"movaps %%xmm0, %[o] \n\t" \&lt;br /&gt;&lt;br /&gt;: [o] "=m"(r)&lt;br /&gt;&lt;br /&gt;: [ina] "m"(a), [inb] "m"(b));&lt;br /&gt;&lt;br /&gt;return r;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;*** EOF *** &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Segue um teste básico &lt;br /&gt;&amp;nbsp; &lt;br /&gt;*** teste_cpp.cpp **** &lt;br /&gt;&amp;nbsp; &lt;br /&gt;#include "vec4.hpp" &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;/stdio.h&gt;&lt;br /&gt;&lt;br /&gt;void printV(vec4f v)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;printf("x: %f y: %f z: %f w: %f\n",v.x, v.y, v.z, v.w); &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int main(int argc,char **argv)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;vec4f a = {10.f,10.0f,10.0f,10.0f};&lt;br /&gt;&lt;br /&gt;vec4f b = {2.0f,2.0f,2.0f,2.0f};&lt;br /&gt;&lt;br /&gt;vec4f c;&lt;br /&gt;printf("a ");&lt;br /&gt;&lt;br /&gt;printV(a);&lt;br /&gt;&lt;br /&gt;printf("b ");&lt;br /&gt;&lt;br /&gt;printV(b);&lt;br /&gt;&lt;br /&gt;c = a + b;&lt;br /&gt;&lt;br /&gt;printf("a + b \n");&lt;br /&gt;&lt;br /&gt;printV(c);&lt;br /&gt;&lt;br /&gt;c = a - b;&lt;br /&gt;&lt;br /&gt;printf("a - b \n");&lt;br /&gt;&lt;br /&gt;printV(c);&lt;br /&gt;&lt;br /&gt;c = a * b;&lt;br /&gt;&lt;br /&gt;printf("a * b \n");&lt;br /&gt;&lt;br /&gt;printV(c);&lt;br /&gt;&lt;br /&gt;c = a / b;&lt;br /&gt;&lt;br /&gt;printf("a / b \n");&lt;br /&gt;&lt;br /&gt;printV(c);&lt;br /&gt;&lt;br /&gt;vec4f z = a*a / b;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;printf("z = a*a /b \n");&lt;br /&gt;&lt;br /&gt;printV(z);&lt;br /&gt;&lt;br /&gt;return 0;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;*** EOF ***&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O Resultado:&lt;br /&gt;a x: 10.000000 y: 10.000000 z: 10.000000 w: 10.000000&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;b x: 2.000000 y: 2.000000 z: 2.000000 w: 2.000000&lt;br /&gt;&lt;br /&gt;a + b &lt;br /&gt;&lt;br /&gt;x: 12.000000 y: 12.000000 z: 12.000000 w: 12.000000&lt;br /&gt;&lt;br /&gt;a - b &lt;br /&gt;&lt;br /&gt;x: 8.000000 y: 8.000000 z: 8.000000 w: 8.000000&lt;br /&gt;&lt;br /&gt;a * b &lt;br /&gt;&lt;br /&gt;x: 20.000000 y: 20.000000 z: 20.000000 w: 20.000000&lt;br /&gt;&lt;br /&gt;a / b &lt;br /&gt;&lt;br /&gt;x: 5.000000 y: 5.000000 z: 5.000000 w: 5.000000&lt;br /&gt;&lt;br /&gt;z = a*a /b &lt;br /&gt;&lt;br /&gt;x: 50.000000 y: 50.000000 z: 50.000000 w: 50.000000&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;por equanto tudo tranquilo, o próximo passo é fazer as multiplicação por matrizes, apesar de não ser ideal fazer por SSE mas é de maneira geral um artigo interessante, então no próximo da série trataremos de multiplicação de vetores por matrizes&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-4140192646197583985?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/4140192646197583985/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=4140192646197583985&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4140192646197583985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4140192646197583985'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/09/operacoes-com-vetor-usando-sse-parte-ii.html' title='Operações com vetor usando SSE Parte II'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-5169051839028375962</id><published>2009-09-15T19:26:00.000-03:00</published><updated>2009-09-15T19:26:30.559-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><title type='text'>Newbie Game Engine Updates</title><content type='html'>Fiz algumas melhorias na Classe de Terreno e Mesh (Terreno herda de Mesh) e o Mesh que carregava wavefront virou Wavefront.h, mas o mapa ainda ta com problema precisa de diversas melhorias,&lt;br /&gt;outra novidade é o build pra vs2005 (buid/vs2005).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-kJRL_SSm6c/SrAS1oyFUSI/AAAAAAAAAbE/4cuPJF8p45I/s1600-h/mapa.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" mq="true" src="http://2.bp.blogspot.com/_-kJRL_SSm6c/SrAS1oyFUSI/AAAAAAAAAbE/4cuPJF8p45I/s320/mapa.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;na imagem acima a esfera não colide com o terreno, vai ser um problema desagradavél de se resolver.&lt;br /&gt;&lt;br /&gt;atualizei o código no sf, mas ainda não fiz o commit no svn. Agora vou ouvir The Gladiators e jogar, tb tenho que terminar de instalar as dependecias do GNU Octave.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-5169051839028375962?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/5169051839028375962/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=5169051839028375962&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/5169051839028375962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/5169051839028375962'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/09/newbie-game-engine-updates.html' title='Newbie Game Engine Updates'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-kJRL_SSm6c/SrAS1oyFUSI/AAAAAAAAAbE/4cuPJF8p45I/s72-c/mapa.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-6339768306149853837</id><published>2009-09-14T17:37:00.000-03:00</published><updated>2009-09-14T17:37:56.535-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Matemática'/><title type='text'>Ánalise numérica ON-LINE</title><content type='html'>Galera achei uma interface web para o programa GNU Octave (equivalente ao Matlab), os gentis senhores do Department of Mathematics, Warsaw University. (Polonia), emprestão seus processadores para fazermos os nossos calculos on-line.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_-kJRL_SSm6c/Sq6oFOtsmUI/AAAAAAAAAa8/azlXWTyFfVg/s1600-h/plot1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_-kJRL_SSm6c/Sq6oFOtsmUI/AAAAAAAAAa8/azlXWTyFfVg/s400/plot1.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;me divertindo um pouco criei esta plot:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;x = y = -10:0.1:10;&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[X,Y] = meshgrid(x,y);&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mesh(X,Y,(1./X).*sin(X).*(1./Y).*sin(Y));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: inherit;"&gt;não há limites quanto ao tempo de computação mais esses generosos senhores pedem:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Please do not submit codes that will run for a long time or take up a lot of memory.&lt;/strong&gt; This service is intended for occasional, quick computations. Use "&lt;kbd&gt;Files -&amp;gt; Remove all files&lt;/kbd&gt;" button to clear your workspace after you are done. All your activities are being logged. If you don't like this policy, don't use this service.&lt;span style="color: black;"&gt;&lt;span style="font-family: inherit;"&gt; "&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;agora quando tiver perdido em algum lugar em posse de um computador e tiver que fazer um calulo já sabe onde deve ir: http://hara.mimuw.edu.pl/weboctave/web/index.php&lt;br /&gt;&lt;br /&gt;a interface Web é um projeto Open Source&amp;nbsp; está no Source Forge&lt;br /&gt;http://sourceforge.net/projects/weboctave/&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-6339768306149853837?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/6339768306149853837/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=6339768306149853837&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/6339768306149853837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/6339768306149853837'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/09/analise-numerica-on-line.html' title='Ánalise numérica ON-LINE'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-kJRL_SSm6c/Sq6oFOtsmUI/AAAAAAAAAa8/azlXWTyFfVg/s72-c/plot1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-4953144712579424845</id><published>2009-09-13T17:22:00.002-03:00</published><updated>2009-10-20T17:20:59.650-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Deferred Load ASP.NET/JQuery</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Hoje vou descrever uma técnica de como carregar o conteúdo&amp;nbsp; dinâmico após a pagina ser carregada, isso pode aumentar bastante a experiência com o usuário se você tem que exibir uma quantidade grande de dados, ou pegar algum conteúdo de um servidor externo. A técnica consiste em baixar todo o conteúdo estático, e após o documento estar pronto (ready), fazer uma requisição em AJAX para baixar o conteúdo dinâmico.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_-kJRL_SSm6c/Sq1RTRgZriI/AAAAAAAAAas/rDY0pyzEHcg/s1600-h/img1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_-kJRL_SSm6c/Sq1RTRgZriI/AAAAAAAAAas/rDY0pyzEHcg/s320/img1.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Temos dois exemplos um pegando o conteúdo de RSS e montando uma lista via javascript, no segundo caso que renderiza o HTML é um WebControl contendo um Repeater, então vamos para o código.&lt;br /&gt;&lt;br /&gt;Antes de mais nada crie um novo projeto Web e monte o mesmo com a estrutura abaixo.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_-kJRL_SSm6c/Sq1Rsx4Uw8I/AAAAAAAAAa0/f-iMZnqyEBw/s1600-h/img2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_-kJRL_SSm6c/Sq1Rsx4Uw8I/AAAAAAAAAa0/f-iMZnqyEBw/s320/img2.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;O&amp;nbsp; FeederLoader.cs representa o Proxy entre a fonte de dados e a requisição AJAX, nela usamos o WebClient para baixar um RSS e devolvemos para o navegador, e o código dela e este:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;public class FeederLoader&lt;br /&gt;{&lt;br /&gt;    public FeederLoader()&lt;br /&gt;    {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public string Load(string url)&lt;br /&gt;    {&lt;br /&gt;        WebClient client = new WebClient();&lt;br /&gt;        byte[] buffer = client.DownloadData(url);&lt;br /&gt;&lt;br /&gt;        return UTF8Encoding.UTF8.GetString(buffer);&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O método Load baixa o conteúdo da url usando o WebClient e devolve como uma String UTF-8. &lt;br /&gt;Partimos agora para o Handler FeederJS.ashx&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;public void ProcessRequest (HttpContext context) {&lt;br /&gt;        context.Response.ContentType = "text/xml";&lt;br /&gt;        FeederLoader Loader = new FeederLoader();&lt;br /&gt;        &lt;br /&gt;       System.Threading.Thread.Sleep(1000); //só pra ficar cool&lt;br /&gt;&lt;br /&gt;        string rss = Loader.Load("http://newbie-x11.blogspot.com/feeds/posts/default?alt=rss");&lt;br /&gt;        context.Response.Write(rss);&lt;br /&gt;        context.Response.End();&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;No método ProcessRequest usamos o FeederLoad pra baixar o RSS deste blog :-] , e devolver para o XML  navegador.&lt;br /&gt;Agora a página Web, EmJavaScript.aspx&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&amp;lt;style type="text/css"&amp;gt;&lt;br /&gt;        &lt;br /&gt;        .Loading&lt;br /&gt;        {&lt;br /&gt;            background-image: url('images/loader.gif');&lt;br /&gt;            background-repeat:no-repeat;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;    &amp;lt;/style&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;div id="master"&amp;gt;&lt;br /&gt;            &amp;lt;div id="static"&amp;gt;&lt;br /&gt;                Como as vezes tenho uma alta enorme de creatividade não vou escrever nada aqui.&lt;br /&gt;            &amp;lt;/div&amp;gt;&lt;br /&gt;            &amp;lt;div id="dynamic"&amp;gt;&lt;br /&gt;            &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;        &amp;lt;div&amp;gt;&lt;br /&gt;&lt;br /&gt;            &amp;lt;script type="text/javascript" src="js/jquery-1.3.2.min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;            &amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;            $(document).ready(function(){&lt;br /&gt;            var ajaxOption = {&lt;br /&gt;                        type: "GET",&lt;br /&gt;                        url: "handlers/FeederJS.ashx",&lt;br /&gt;                        dataType : "xml",&lt;br /&gt;                        success : function(data){&lt;br /&gt;                            var html = "&amp;lt;ul&amp;gt;"&lt;br /&gt;                            $(data).find('item').each(function(){&lt;br /&gt;                                var titulo = $(this).find('title').text();&lt;br /&gt;                                html += "&amp;lt;li&amp;gt;"+titulo+"&amp;lt;/li&amp;gt;";&lt;br /&gt;                            });&lt;br /&gt;                            &lt;br /&gt;                            html += "&amp;lt;/ul&amp;gt;";&lt;br /&gt;                            &lt;br /&gt;                            $("#dynamic").append(html);&lt;br /&gt;                            $("#dynamic").attr("class","");&lt;br /&gt;                        }&lt;br /&gt;                    };&lt;br /&gt;                    &lt;br /&gt;                    $("#dynamic").attr("class","Loading");&lt;br /&gt;                    &lt;br /&gt;                    $.ajax(ajaxOption);&lt;br /&gt;                    &lt;br /&gt;            });&lt;br /&gt;            &lt;br /&gt;          &lt;br /&gt;            &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Acima antes de fazer a requisição em AJAX , mudamos o CSS do elemento que abriga o conteúdo dinâmico para a classe que contem a imagem carregando, na Requisição (success), fazemos o loop no xml e montamos uma lista, preenchemos o conteudo carregado no elemento, e removo a classe de CSS .Loading, e Badabum..&lt;br /&gt;&lt;br /&gt;Agora se você não quer ficar montando conteudo via JavaScript demonstro abaixo com poucas modificações, fazemos a mesma coisa só que usando o um Repeater e um User Control, vamos lá crie o Controle, então adicione um novo Web User Control com o nome de Listageml.ascx, e o código dele segue abaixo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&amp;lt;%@ Control Language="C#" AutoEventWireup="true" CodeFile="Listageml.ascx.cs" Inherits="controles_Listageml" %&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;&lt;br /&gt;    &amp;lt;asp:Repeater ID="Repeater1" runat="server"&amp;gt;&lt;br /&gt;        &amp;lt;HeaderTemplate&amp;gt;&lt;br /&gt;            &amp;lt;ul&amp;gt;&lt;br /&gt;        &amp;lt;/HeaderTemplate&amp;gt;&lt;br /&gt;        &amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;            &amp;lt;li&amp;gt;&lt;br /&gt;                &amp;lt;%# Eval("title") %&amp;gt;&lt;br /&gt;            &amp;lt;/li&amp;gt;&lt;br /&gt;        &amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;        &amp;lt;FooterTemplate&amp;gt;&lt;br /&gt;            &amp;lt;/ul&amp;gt;&amp;lt;/FooterTemplate&amp;gt;&lt;br /&gt;    &amp;lt;/asp:Repeater&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;O .cs:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;    {&lt;br /&gt;        XmlTextReader reader = new XmlTextReader("http://g1.globo.com/Rss2/0,,AS0-5597,00.xml");&lt;br /&gt;&lt;br /&gt;        DataSet ds = new DataSet();&lt;br /&gt;&lt;br /&gt;        ds.ReadXml(reader);&lt;br /&gt;        Repeater1.DataSource = ds.Tables["item"];&lt;br /&gt;        Repeater1.DataBind();&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Creio que não seja necessário comentar o bloco acima, agora vamos ao Handler FeederASP.ashx, que tem modificações significativas:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;public void ProcessRequest (HttpContext context) {&lt;br /&gt;        &lt;br /&gt;        Page page = new Page();&lt;br /&gt;        UserControl ctl = (UserControl)page.LoadControl("~/controles/Listageml.ascx");&lt;br /&gt;        StringWriter writer = new StringWriter();&lt;br /&gt;&lt;br /&gt;        System.Threading.Thread.Sleep(1000); //só pra ficar cool&lt;br /&gt;        &lt;br /&gt;        page.Controls.Add(ctl);&lt;br /&gt;        HttpContext.Current.Server.Execute(page, writer, false);&lt;br /&gt;&lt;br /&gt;        context.Response.ContentType = "text/plain";&lt;br /&gt;        context.Response.Write(writer.ToString());&lt;br /&gt;        context.Response.End();&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Acima usamos estas linhas malucas para renderizar o HTML do controle, se tiver a necessidade de passar parâmetros para o controle pode usar os atributos, mas compensa dar um passeio pelo Google e ler sobe WebControls.&lt;br /&gt;Passamos agora para o arquivo EmASP.aspx, a única mudança é no Java script:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;            $(document).ready(function(){&lt;br /&gt;            var ajaxOption = {&lt;br /&gt;                        type: "GET",&lt;br /&gt;                        url: "handlers/FeederASP.ashx",&lt;br /&gt;                        dataType : "text",&lt;br /&gt;                        success : function(data){&lt;br /&gt;                         &lt;br /&gt;                            &lt;br /&gt;                            $("#dynamic").append(data);&lt;br /&gt;                            $("#dynamic").attr("class","");&lt;br /&gt;                        }&lt;br /&gt;                    };&lt;br /&gt;                    &lt;br /&gt;                    $("#dynamic").attr("class","Loading");&lt;br /&gt;                    &lt;br /&gt;                    $.ajax(ajaxOption);&lt;br /&gt;                    &lt;br /&gt;            });&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br /&gt;Simplificou bastante, aqui só pegamos o conteúdo pronto e colocamos no elemento.&lt;br /&gt;Pronto é isso, pode baixar o código fonte &lt;a href="http://br.geocities.com/newbie_x11/DefferedLoad.zip"&gt;aqui&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-4953144712579424845?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/4953144712579424845/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=4953144712579424845&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4953144712579424845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4953144712579424845'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/09/deferred-load-aspnetjquery.html' title='Deferred Load ASP.NET/JQuery'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-kJRL_SSm6c/Sq1RTRgZriI/AAAAAAAAAas/rDY0pyzEHcg/s72-c/img1.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-1986801595667159023</id><published>2009-08-30T10:35:00.003-03:00</published><updated>2009-08-30T10:37:25.360-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Terreno Parte 2</title><content type='html'>&lt;div&gt;Depois de algumas xícaras de café, algumas horas no parque do ipirangacom um caderno uma caneta e minha calculadora HP 9s, consegui gerar um terreno no minimo decente mais ainda fanta muita coisa, corrigi os problemas de collisão,agora os objetos colliden corretamente inclusive com o terreno.nos proximos dias estarei me divertindo montando uma classe de veiculo.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_-kJRL_SSm6c/SpqARQ5--GI/AAAAAAAAAaM/Kr415WnOAko/s1600-h/map.bmp"&gt;&lt;img style="WIDTH: 128px; HEIGHT: 128px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5375750139304409186" border="0" alt="" src="http://4.bp.blogspot.com/_-kJRL_SSm6c/SpqARQ5--GI/AAAAAAAAAaM/Kr415WnOAko/s320/map.bmp" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_-kJRL_SSm6c/SpqAb0yDKRI/AAAAAAAAAaU/BaB3pxtH9kE/s1600-h/Terreno2.png"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 240px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5375750320733497618" border="0" alt="" src="http://3.bp.blogspot.com/_-kJRL_SSm6c/SpqAb0yDKRI/AAAAAAAAAaU/BaB3pxtH9kE/s320/Terreno2.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-1986801595667159023?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/1986801595667159023/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=1986801595667159023&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/1986801595667159023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/1986801595667159023'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/08/terreno-parte-2.html' title='Terreno Parte 2'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-kJRL_SSm6c/SpqARQ5--GI/AAAAAAAAAaM/Kr415WnOAko/s72-c/map.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-2856910732863690820</id><published>2009-08-27T11:02:00.006-03:00</published><updated>2009-08-27T13:56:04.432-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Engine de Terreno</title><content type='html'>Olá pessoal comecei a codar o modulo de terreno na engine, o que fiz até agora&lt;br /&gt;foi gerar uma malha de terreno e gerar os triangulos a partir dela, o próximo&lt;br /&gt;passo é pegar todos esses vertices indexar gerar um Mesh para o ODE,&lt;br /&gt;eu já podia e separar a Classe de Mesh assim o loader de wavefront,&lt;br /&gt;e o mesh de terreno podem ser interpretados da mesma maneira para o ODE.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_-kJRL_SSm6c/Spa2SxmEcZI/AAAAAAAAAaE/q7Fk7AVl8WQ/s1600-h/Terreno1.png"&gt;&lt;img style="cursor: pointer; width: 302px; height: 320px;" src="http://4.bp.blogspot.com/_-kJRL_SSm6c/Spa2SxmEcZI/AAAAAAAAAaE/q7Fk7AVl8WQ/s320/Terreno1.png" alt="" id="BLOGGER_PHOTO_ID_5374683638980178322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Vale apena fazer um observação sobre a elegancia da geração atual da imagem.&lt;br /&gt;&lt;br /&gt;     int offset = w*y+x;&lt;br /&gt;     index[offset] = offset;&lt;br /&gt;     grid[offset].x = x*scale;&lt;br /&gt;     grid[offset].z = y*scale;&lt;br /&gt;     grid[offset].y = sinf(x/2)*3;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vai lá no sf e pega a última versão.&lt;br /&gt;https://sourceforge.net/projects/newbie-engine/files/&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-2856910732863690820?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/2856910732863690820/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=2856910732863690820&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2856910732863690820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2856910732863690820'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/08/engine-de-terreno.html' title='Engine de Terreno'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-kJRL_SSm6c/Spa2SxmEcZI/AAAAAAAAAaE/q7Fk7AVl8WQ/s72-c/Terreno1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-6503970189389941462</id><published>2009-07-17T13:18:00.005-03:00</published><updated>2009-07-17T13:35:49.672-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Socket em *NIX</title><content type='html'>Tirei esse do fundo do báu, os dos HD's se prefirir e datado de 05/2005 e eu fiz pro grupo União Atlantica, e um código comentado que serve como tutorial, ele mostra como estabelecer conexão cliente-servidor usando sockets em *NIX creio que não funcione no windows.&lt;br /&gt;&lt;br /&gt;****Cliente***&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;#include &amp;lt;netinet/&lt;span class="kwrd"&gt;in&lt;/span&gt;.h&amp;gt;&lt;br /&gt;#include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; main(&lt;span class="kwrd"&gt;int&lt;/span&gt; argc,&lt;span class="kwrd"&gt;char&lt;/span&gt; *argv[])&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; TSocket;&lt;br /&gt;&lt;span class="kwrd"&gt;struct&lt;/span&gt; sockaddr_in servidor;&lt;br /&gt;&lt;span class="kwrd"&gt;char&lt;/span&gt; msg[17] = &lt;span class="str"&gt;"Uniao Atlantica\0"&lt;/span&gt;;&lt;br /&gt;&lt;span class="rem"&gt;//inicia o socket&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//nota parametro 1 tipo familia do socke&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//pode ser AF_INET (ARPA INTERNET PROTOCOLOS) "mais usada"&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//""       AF_UNIX (UNIX INTERNET PROTOCOLOS)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//""       AF_ISO  (ISO PROTOCOLOS)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//""       AF_NS   (XEROX NETWORK SYSTEM PROTOCOLOS)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;//nota parametro  tipos SOCK_STREAM = TCP, SOCK_DGRAM = UDP&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//terceiro parametro 0 (faleremos depois)&lt;/span&gt;&lt;br /&gt;TSocket = socket(AF_INET,SOCK_STREAM,0);&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (TSocket &amp;lt; 0) &lt;span class="rem"&gt;//simples checagem de erro&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;printf(&lt;span class="str"&gt;"Erro\n"&lt;/span&gt;);&lt;br /&gt;exit(0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;//montando a estrutu servidor essa estrutura mas TSocket vao fazer a conecao&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//entre o nosso cliente e o servidor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;//estrutura sockaddr_in&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//struct sockaddr_in {&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//short int sin_family; { do endreco (ex: AF_INET)}&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//unsignet short int sin_port; (numero da porta)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//struct sin_addr in_addr; (ip do host)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//unsignet char sin_zero[8]; (zera a estrutura)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;servidor.sin_family = AF_INET;&lt;br /&gt;servidor.sin_port = htons(3506); &lt;span class="rem"&gt;//porta que vamos usar&lt;/span&gt;&lt;br /&gt;                               &lt;span class="rem"&gt;//o htons significa host to network short&lt;/span&gt;&lt;br /&gt;                               &lt;span class="rem"&gt;//mais info (man pages)&lt;/span&gt;&lt;br /&gt;servidor.sin_addr.s_addr = inet_addr(&lt;span class="str"&gt;"127.0.0.1"&lt;/span&gt;); &lt;span class="rem"&gt;//ip destino&lt;/span&gt;&lt;br /&gt;bzero(&amp;amp;(servidor.sin_zero),8); &lt;span class="rem"&gt;//zera o resto da estrutura&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;//agora a funcao connect essa funcao faz a conecao com o servidor&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;if&lt;/span&gt; (connect(TSocket,(&lt;span class="kwrd"&gt;struct&lt;/span&gt; sockaddr *)&amp;amp;servidor,&lt;span class="kwrd"&gt;sizeof&lt;/span&gt;(servidor)) &amp;lt; 0)&lt;br /&gt;{&lt;br /&gt;printf(&lt;span class="str"&gt;"erro ao fazer a conexao\n"&lt;/span&gt;);&lt;br /&gt;exit(0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;//agora vamos usar vamos enviar uma  mesnsagem para o servidor&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//usnado a funcao send();&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//prototipo&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//int send(int TSocket,const void *msg,int size_t len,int flags)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;send(TSocket,&amp;amp;msg,&lt;span class="kwrd"&gt;sizeof&lt;/span&gt;(msg),0);&lt;br /&gt;&lt;br /&gt;&lt;span class="rem"&gt;//agora fechamos nosso cliente&lt;/span&gt;&lt;br /&gt;close(TSocket);&lt;br /&gt;&lt;span class="rem"&gt;//bom Daniel pela experiencia que voce tem com redes acho q deu pra entender tudo ate agora&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//vc manja mais de ingles que eu e esse seu debian ta lotado de man pages&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//qualquer coisa psota sua msg pro grupo ou pra min que a gente resolve&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//pra compilar gcc cliente.c -o cliente&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//executar ./cliente&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;****Servidor.c****&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="rem"&gt;//o que tem de novo aki e sao a funcoes bind() e listen()&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//a funcao bind associa um socket ao nosso servidor local (eu numca entendi isso direita mas fazer o que)&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//a funcao listem faz nosso servidor esperar uma conecao faz ele escutar&lt;/span&gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;#include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;#include &amp;lt;netinet/&lt;span class="kwrd"&gt;in&lt;/span&gt;.h&amp;gt;&lt;br /&gt;#include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;#include &amp;lt;signal.h&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; main(&lt;span class="kwrd"&gt;int&lt;/span&gt; argc,&lt;span class="kwrd"&gt;char&lt;/span&gt; *argv[])&lt;br /&gt;{&lt;br /&gt;  &lt;span class="kwrd"&gt;int&lt;/span&gt; TSocket,Clientes[5],tamanho;&lt;br /&gt;  &lt;span class="kwrd"&gt;struct&lt;/span&gt; sockaddr_in local,cliente[5];&lt;br /&gt;  &lt;span class="kwrd"&gt;int&lt;/span&gt; Count,Next =0;&lt;br /&gt;  &lt;span class="kwrd"&gt;char&lt;/span&gt; *recived_msg; &lt;span class="rem"&gt;//cinco strings para evitar que um dois processos filhos tentem escrever a mesmo tempo &lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;int&lt;/span&gt; Atual[5]; &lt;span class="rem"&gt;//tb uma pra cada um&lt;/span&gt;&lt;br /&gt;    &lt;span class="rem"&gt;//vamos setar a estrutura local com infomacoes da nossa maquina&lt;/span&gt;&lt;br /&gt;  TSocket = socket(AF_INET,SOCK_STREAM,0);&lt;br /&gt; &lt;br /&gt;  local.sin_family = AF_INET;&lt;br /&gt;  local.sin_port = htons(3506);&lt;br /&gt;  local.sin_addr.s_addr = INADDR_ANY; &lt;span class="rem"&gt;//enderco local&lt;/span&gt;&lt;br /&gt;  bzero(&amp;amp;(local.sin_zero),8);&lt;br /&gt; &lt;br /&gt;  &lt;span class="rem"&gt;//usar o misterioso bind&lt;/span&gt;&lt;br /&gt;  bind(TSocket,(&lt;span class="kwrd"&gt;struct&lt;/span&gt; sockaddr *)&amp;amp;local,&lt;span class="kwrd"&gt;sizeof&lt;/span&gt;(&lt;span class="kwrd"&gt;struct&lt;/span&gt; sockaddr));&lt;br /&gt; &lt;br /&gt;  &lt;span class="rem"&gt;//agora a funcao listem ela e bem simple&lt;/span&gt;&lt;br /&gt;  listen(TSocket,5); &lt;span class="rem"&gt;//o segundo parametro 5 e o numero de conexoes que vamos esperar (max)&lt;/span&gt;&lt;br /&gt;  tamanho = &lt;span class="kwrd"&gt;sizeof&lt;/span&gt;(&lt;span class="kwrd"&gt;struct&lt;/span&gt; sockaddr_in);&lt;br /&gt;  &lt;span class="kwrd"&gt;while&lt;/span&gt; (Next &amp;lt; 5)&lt;br /&gt;    {&lt;br /&gt;   &lt;span class="kwrd"&gt;if&lt;/span&gt; ((Clientes[Next] = accept(TSocket,(&lt;span class="kwrd"&gt;struct&lt;/span&gt; sockaddr *)&amp;amp;cliente[Next],&amp;amp;tamanho)) &amp;lt; 0)&lt;br /&gt;     {&lt;br /&gt;        printf(&lt;span class="str"&gt;"Erro\n"&lt;/span&gt;);&lt;br /&gt;        exit(0);&lt;br /&gt;     }&lt;br /&gt;   &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;     {&lt;br /&gt;        printf(&lt;span class="str"&gt;"Cliente se conectou numero: %d, ip:%s\n"&lt;/span&gt;,Next,inet_ntoa(cliente[Next].sin_addr));&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (!fork())&lt;br /&gt;          {&lt;br /&gt;         &lt;span class="kwrd"&gt;int&lt;/span&gt; coisa =  Next;&lt;br /&gt;         &lt;span class="kwrd"&gt;while&lt;/span&gt;(1)&lt;br /&gt;           {&lt;br /&gt;              &lt;span class="kwrd"&gt;if&lt;/span&gt; (recv(Clientes[coisa],recived_msg,20,0) &amp;lt; 0)&lt;br /&gt;            {&lt;br /&gt;               printf(&lt;span class="str"&gt;"Erro ao receber msg\n"&lt;/span&gt;);&lt;br /&gt;               exit(0);&lt;br /&gt;            }&lt;br /&gt;              &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;               printf(&lt;span class="str"&gt;"Msg Recebida:%s\n"&lt;/span&gt;,recived_msg);&lt;br /&gt;               exit(0);&lt;br /&gt;            }&lt;br /&gt;           }&lt;br /&gt;        &lt;br /&gt;          }&lt;br /&gt;        Next++;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;span class="rem"&gt;//o fork que faz o bicho  pegar o resto nem e divertido&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//imagine nosso servidor tendo que segurar 50 conexoes&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//ai a conexao de algum kra anda bem lenta se o as nossas&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//checagens ficassem todas num loop ia atrapalhar o andamento&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//de todo servidor por isso criamos um novo processo com o fork&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//ele se comunica com o pai claro mas a coisa nao e tao simples&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//assim agora vou escrever um aplicativo interativo pra ser jogado&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//entre no minimo 3 pessoas um servidor e dois clientes&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;////pra gente testar todas as singularidades espero&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//que essa parte da trasnmissao ja lhe seja util de algo&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//qualquer coisa sabe como me encontrar&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//comando pra compilar $gcc servidor.c -o servidor&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//mais uma coisa isso nao ta funcionando corretamente&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//pois c os 5 servidores tiverem conectados ao mesmo tempo&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//ele so vai ler o Next que e cinco isso e  um problema com&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//o fork que eu to tentando resolver eu queria uma fariavel&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;//que so fosse assecivel pelo processo filho atraves do PID..&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;particularmente prefiro o &lt;a href="http://www.libsdl.org/projects/SDL_net/"&gt;SDL_net&lt;/a&gt; é multiplataforma e mais simples de se usar.&lt;br /&gt;nem estou pensando em multiplayer agora, só to publicando o que ta no bau.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-6503970189389941462?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/6503970189389941462/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=6503970189389941462&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/6503970189389941462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/6503970189389941462'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/07/socket-em-nix.html' title='Socket em *NIX'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-7832829312585049783</id><published>2009-07-17T08:53:00.008-03:00</published><updated>2009-07-17T09:51:44.844-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><title type='text'>A Quantas anda a Engine</title><content type='html'>Venho trazer noticias do que ando aprontando com a engine, primeiro tive um grande martirio tentando implementar os &lt;a href="http://newbie-x11.blogspot.com/2009/05/programando-gpu.html"&gt;shaders&lt;/a&gt; mas bem após horas cansativas escrevendo coisas como&lt;br /&gt;&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-family:lucida grande;" &gt;!!ARBvp1.0 "&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:lucida grande;" &gt;PARAM mvp[4] = { state.matrix.mvp }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:lucida grande;" &gt;PARAM yellow = {1.0,1.0,0.0,0.0};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:lucida grande;" &gt;OUTPUT outPosition = result.position;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:lucida grande;" &gt; MOV result.color, vertex.color;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:lucida grande;" &gt;DP4 outPosition.x, mvp[0], vertex.position;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:lucida grande;" &gt;DP4 outPosition.y, mvp[1], vertex.position;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:lucida grande;" &gt;...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Sem debug, sem nem mesmo um analisador lexico para mostrar onde estão os erros, foram horas divertidas eu diria mas enfim estudei as equações do &lt;a href="http://en.wikipedia.org/wiki/Bui_Tuong_Phong"&gt;Dr. Phong&lt;/a&gt; e implementei algo deveria ser um Per Pixel Ligthing&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-kJRL_SSm6c/SmBy8wV3yGI/AAAAAAAAAXA/AxyFA1mbGSI/s1600-h/PixelLigth.PNG"&gt;&lt;img style="cursor: pointer; width: 305px; height: 320px;" src="http://1.bp.blogspot.com/_-kJRL_SSm6c/SmBy8wV3yGI/AAAAAAAAAXA/AxyFA1mbGSI/s320/PixelLigth.PNG" alt="" id="BLOGGER_PHOTO_ID_5359409944665245794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Tambem fiz modificações no que é pra ser um Sistema de Particulas temos a representação de uma Explosão classe &lt;a href="http://newbie-engine.svn.sourceforge.net/viewvc/newbie-engine/include/Explosion.h?revision=15&amp;amp;view=markup"&gt;Explosion&lt;/a&gt; que é Herdeira de &lt;a href="http://newbie-engine.svn.sourceforge.net/viewvc/newbie-engine/include/ParticleSystem.h?revision=15&amp;amp;view=markup"&gt;ParticleSystem&lt;/a&gt; e enfim comecei a criar a classe &lt;a href="http://newbie-engine.svn.sourceforge.net/viewvc/newbie-engine/include/ParticleManager.h?revision=15&amp;amp;view=markup"&gt;ParticleManager&lt;/a&gt;, imaginem um bombardeiro de um &lt;a href="http://pt.wikipedia.org/wiki/B-52"&gt;B-52&lt;/a&gt; a cada bomba que geraria uma explosão, adicionariamos uma instancia de Explosion a ParticleManager e ela gerenciaria os sistemas.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_-kJRL_SSm6c/SmBzL7U1Q7I/AAAAAAAAAXI/g7eh1iW0iGc/s1600-h/PixelLigth2.PNG"&gt;&lt;img style="cursor: pointer; width: 305px; height: 320px;" src="http://3.bp.blogspot.com/_-kJRL_SSm6c/SmBzL7U1Q7I/AAAAAAAAAXI/g7eh1iW0iGc/s320/PixelLigth2.PNG" alt="" id="BLOGGER_PHOTO_ID_5359410205311714226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;Agora estou pensando em um &lt;a href="http://www.lighthouse3d.com/opengl/terrain/"&gt;terreno&lt;/a&gt; não tenho mais como fugir das &lt;a href="http://opende.sourceforge.net/wiki/index.php/Manual_%28Joint_Types_and_Functions%29"&gt;joints&lt;/a&gt; do ODE e de um gameplay.&lt;br /&gt;&lt;br /&gt;O diagrama de classe nem todas estão implementadas.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-kJRL_SSm6c/SmBzjoM4sMI/AAAAAAAAAXQ/4-UiSmzoWmM/s1600-h/diagrama+de+classe.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 293px;" src="http://1.bp.blogspot.com/_-kJRL_SSm6c/SmBzjoM4sMI/AAAAAAAAAXQ/4-UiSmzoWmM/s320/diagrama+de+classe.png" alt="" id="BLOGGER_PHOTO_ID_5359410612494971074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-family:lucida grande;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;Nas próximas semanas atualizo o SVN.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-family:lucida grande;" &gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-7832829312585049783?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/7832829312585049783/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=7832829312585049783&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/7832829312585049783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/7832829312585049783'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/07/quantas-anda-engine.html' title='A Quantas anda a Engine'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-kJRL_SSm6c/SmBy8wV3yGI/AAAAAAAAAXA/AxyFA1mbGSI/s72-c/PixelLigth.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-8175609777611193239</id><published>2009-07-15T08:20:00.010-03:00</published><updated>2009-07-16T09:48:53.718-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>AJAX + JQuery II</title><content type='html'>&lt;p class="MsoNormal"&gt;Olá pessoal, nesse tutorial vamos usar Ajax para consumir&lt;span style=""&gt;  &lt;/span&gt;Web Services, no exemplo demonstrado temos uma classe de acesso a dados para fazer o cadastro e a listagem no banco de dados que é um uma database .mdf do SQL Server Express 2005, o Web Service é utilizado como Proxy com a classe de acesso a dados. Consumimos Web Services por javascript através de uma classe chamada SoapClient ela e de autoria de &lt;a href="http://www.guru4.net/"&gt;Matteo Casati&lt;/a&gt; , mas tive que dar uma pequena hackeada nela pois a mesma não funcionava no FireFox (ao menos no meu).&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Agora vamos ao trabalho Crie um novo Web site, no diretório AppData adicione um SQL Database File, de o nome de Contatos.mdf. adicione a tabela abaixo.&lt;/p&gt; &lt;center&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_-kJRL_SSm6c/Sl3EBmJvq5I/AAAAAAAAAWw/0djUPvV_OeU/s1600-h/Tabela.PNG"&gt;&lt;img style="cursor: pointer; width: 188px; height: 100px;" src="http://1.bp.blogspot.com/_-kJRL_SSm6c/Sl3EBmJvq5I/AAAAAAAAAWw/0djUPvV_OeU/s320/Tabela.PNG" alt="" id="BLOGGER_PHOTO_ID_5358654663341091730" border="0" /&gt;&lt;/a&gt; &lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;O campo id é a chave primaria com auto increment, nome é varchar(50) e telefone varchar(15).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Adicione Tb uma procedure para cadastrar e outra para listagem, segue o código das mesmas.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Cadastro&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;PROCEDURE&lt;/span&gt; dbo.usp_insereContato&lt;br /&gt;&lt;br /&gt;(&lt;br /&gt;@nome &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(50),&lt;br /&gt;@telefone &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(15)&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;insert&lt;/span&gt; &lt;span class="kwrd"&gt;into&lt;/span&gt; Contatos (nome,telefone) &lt;span class="kwrd"&gt;values&lt;/span&gt; (@nome,@telefone)&lt;br /&gt;&lt;span class="kwrd"&gt;RETURN&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Listagem&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;PROCEDURE&lt;/span&gt; dbo.usp_listagemContatos&lt;br /&gt;&lt;span class="kwrd"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; id,nome,telefone &lt;span class="kwrd"&gt;from&lt;/span&gt; Contatos&lt;br /&gt;&lt;span class="kwrd"&gt;RETURN&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Essas são as procedures nada de mirabolante dispensa comentários, sem seguida a classe em .cs que representa um contato&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Data.SqlClient;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Configuration;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// Summary description for Contato&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[Serializable]&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Contato&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; id;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Id&lt;br /&gt;{&lt;br /&gt;get { &lt;span class="kwrd"&gt;return&lt;/span&gt; id; }&lt;br /&gt;set { id = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; nome;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Nome&lt;br /&gt;{&lt;br /&gt;get { &lt;span class="kwrd"&gt;return&lt;/span&gt; nome; }&lt;br /&gt;set { nome = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; telefone;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Telefone&lt;br /&gt;{&lt;br /&gt;get { &lt;span class="kwrd"&gt;return&lt;/span&gt; telefone; }&lt;br /&gt;set { telefone = &lt;span class="kwrd"&gt;value&lt;/span&gt;; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; Contato(&lt;span class="kwrd"&gt;string&lt;/span&gt; nome, &lt;span class="kwrd"&gt;string&lt;/span&gt; telefone)&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;this&lt;/span&gt;.nome = nome;&lt;br /&gt;&lt;span class="kwrd"&gt;this&lt;/span&gt;.telefone = telefone;&lt;br /&gt;}&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; Contato()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; List&amp;lt;Contato&amp;gt; Listar()&lt;br /&gt;{&lt;br /&gt;List&amp;lt;Contato&amp;gt; contatos = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;Contato&amp;gt;();&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (SqlConnection connection = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlConnection(ConfigurationManager.ConnectionStrings[&lt;span class="str"&gt;"ConnectionString"&lt;/span&gt;].ConnectionString))&lt;br /&gt;{&lt;br /&gt;SqlCommand command = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlCommand();&lt;br /&gt;command.Connection = connection;&lt;br /&gt;command.CommandType = System.Data.CommandType.StoredProcedure;&lt;br /&gt;command.CommandText = &lt;span class="str"&gt;"usp_listagemContatos"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;connection.Open();&lt;br /&gt;SqlDataReader dr = command.ExecuteReader();&lt;br /&gt;&lt;span class="kwrd"&gt;while&lt;/span&gt; (dr.Read())&lt;br /&gt;{&lt;br /&gt;    Contato contato = &lt;span class="kwrd"&gt;new&lt;/span&gt; Contato();&lt;br /&gt;    contato.id = Convert.ToInt32(dr[&lt;span class="str"&gt;"id"&lt;/span&gt;]);&lt;br /&gt;    contato.nome = Convert.ToString(dr[&lt;span class="str"&gt;"nome"&lt;/span&gt;]);&lt;br /&gt;    contato.telefone = Convert.ToString(dr[&lt;span class="str"&gt;"telefone"&lt;/span&gt;]);&lt;br /&gt;    contatos.Add(contato);&lt;br /&gt;    contato = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;connection.Close();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; contatos;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Cadastrar(&lt;span class="kwrd"&gt;string&lt;/span&gt; nome, &lt;span class="kwrd"&gt;string&lt;/span&gt; telefone)&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (SqlConnection connection = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlConnection(ConfigurationManager.ConnectionStrings[&lt;span class="str"&gt;"ConnectionString"&lt;/span&gt;].ConnectionString))&lt;br /&gt;{&lt;br /&gt;    SqlCommand command = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlCommand();&lt;br /&gt;    command.Connection = connection;&lt;br /&gt;    command.CommandType = System.Data.CommandType.StoredProcedure;&lt;br /&gt;    command.CommandText = &lt;span class="str"&gt;"usp_insereContato"&lt;/span&gt;;&lt;br /&gt;    command.Parameters.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; SqlParameter(&lt;span class="str"&gt;"@nome"&lt;/span&gt;, nome));&lt;br /&gt;    command.Parameters.Add(&lt;span class="kwrd"&gt;new&lt;/span&gt; SqlParameter(&lt;span class="str"&gt;"@telefone"&lt;/span&gt;, telefone));&lt;br /&gt;&lt;br /&gt;    connection.Open();&lt;br /&gt;    command.ExecuteNonQuery();&lt;br /&gt;    connection.Close();&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;span class="kwrd"&gt;catch&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;  &lt;p class="MsoNormal"&gt;Logo acima temos propriedades&lt;span style=""&gt;  &lt;/span&gt;com o nome e o telefone logo em seguida um método de cadastro e listagem, adicione esta classe no diretório APP_CODE com o nome Contato.cs&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Passamos agora para o Web Service é a parte mais graciosa da coisa toda realmente lindo adicione um novo Web Service&lt;span style=""&gt;  &lt;/span&gt;e batize o mesmo de wsContatos.asmx e adicione os dois métodos abaixo&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Cadastrar(&lt;span class="kwrd"&gt;string&lt;/span&gt; nome, &lt;span class="kwrd"&gt;string&lt;/span&gt; telefone)&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; Contato.Cadastrar(nome, telefone);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;Contato&amp;gt; Listar()&lt;br /&gt;{&lt;br /&gt;&lt;span class="kwrd"&gt;return&lt;/span&gt; Contato.Listar();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Perceberam com os métodos são simples basicamente são uma ponte ou Proxy, para a camada de negócios (sei que não temos uma camada de negócios mais esta é a idéia), o motivo que coloquei o [Serializable], neste caso nossos atributos públicos são automaticamente convertidos para um XML válido para a resposta do Web Service a resposta gerada é esta:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="utf-8"&lt;/span&gt; ?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ArrayOfContato&lt;/span&gt; &lt;span class="attr"&gt;xmlns:xsi&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt; &lt;span class="attr"&gt;xmlns:xsd&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/2001/XMLSchema"&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://tempuri.org/"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Contato&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;1&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Nome&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Gabriel&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Nome&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Telefone&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;123456&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Telefone&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Contato&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Contato&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;2&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Nome&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Chuck Norris&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Nome&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Telefone&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;666&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Telefone&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Contato&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Contato&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;3&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Nome&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Shaolin Monk&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Nome&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Telefone&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;999&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Telefone&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Contato&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Contato&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;4&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Id&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Nome&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Grande Cã&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Nome&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Telefone&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;777&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Telefone&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Contato&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ArrayOfContato&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;  &lt;p class="MsoNormal"&gt;Lindo não? Agara vamos para o aspx você vai precisar do SoapClient do italiano maluco, a versão que eu fiz uma pequena modificação se encontra &lt;a href="http://newbie-x11.100webspace.net/arquivos/soapclient.js"&gt;aqui&lt;/a&gt; mas primeiro adicione os controles HTML &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        Nome:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="txtNome"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        Telefone:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="txtTelefone"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="button"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnCadastrar"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Cadastrar"&lt;/span&gt;  &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;="CadastraContato();"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="button"&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnListar"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Listar"&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;="Listar()"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="listagem"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-kJRL_SSm6c/Sl3EVqB8EOI/AAAAAAAAAW4/Un-Jvi29vJc/s1600-h/Page.PNG"&gt;&lt;img style="cursor: pointer; width: 225px; height: 95px;" src="http://2.bp.blogspot.com/_-kJRL_SSm6c/Sl3EVqB8EOI/AAAAAAAAAW4/Un-Jvi29vJc/s320/Page.PNG" alt="" id="BLOGGER_PHOTO_ID_5358655007979475170" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;GO Javascript:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="soapclient.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;         function CadastraContato()&lt;br /&gt;         {&lt;br /&gt;             var nome = document.getElementById('txtNome').value;&lt;br /&gt;             var telefone = document.getElementById('txtTelefone').value;&lt;br /&gt;      &lt;br /&gt;             var parametros = new  SOAPClientParameters();&lt;br /&gt;             parametros.add('nome',nome);&lt;br /&gt;             parametros.add('telefone',telefone);&lt;br /&gt;      &lt;br /&gt;             SOAPClient.invoke("wsContatos.asmx", "Cadastrar", parametros, true, function (data){&lt;br /&gt;          &lt;br /&gt;                 if (data == true)&lt;br /&gt;                 {&lt;br /&gt;                     alert('Contato Cadastrado com sucesso');&lt;br /&gt;                 }&lt;br /&gt;                 else&lt;br /&gt;                 {&lt;br /&gt;                     alert('Houve um problema ao cadastrar o contato');&lt;br /&gt;                 }&lt;br /&gt;      &lt;br /&gt;             });&lt;br /&gt;  &lt;br /&gt;         }&lt;br /&gt;&lt;/pre&gt;                    &lt;p class="MsoNormal"&gt;O que cada coisa faz&lt;br /&gt;var parametros = new&lt;span style=""&gt;  &lt;/span&gt;SOAPClientParameters();&lt;br /&gt;este instancia o objeto responsável de guardar a lista de parâmetros para nossa chamada&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;parametros.add('nome',nome);&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;parametros.add('telefone',telefone);&lt;br /&gt;adiciona os parametos .add(nome,valor) a lista de parâmetros (nossa!)&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;SOAPClient.invoke("wsContatos.asmx", "Cadastrar", parametros, true, function (data){&lt;br /&gt;Invoke(url,método,parâmetros,sicrono/asincrono,callback)&lt;br /&gt;Eu recebo a resposta de confirmação em data o response na verdade&lt;br /&gt;Passamos paro o listar&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;function Listar()&lt;br /&gt;          {&lt;br /&gt;              SOAPClient.invoke("wsContatos.asmx", "Listar", new  SOAPClientParameters(), true, function (data){&lt;br /&gt;            &lt;br /&gt;                  var count = data.length;&lt;br /&gt;                  var html = "";&lt;br /&gt;                  for (i = 0;i &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt; count ; i++)&lt;br /&gt;                  {&lt;br /&gt;                      html += "&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; Nome: "+data[i].Nome+" Telefone: "+data[i].Telefone+"&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;";&lt;br /&gt;        &lt;br /&gt;                  }&lt;br /&gt;            &lt;br /&gt;                  var dv = document.getElementById('listagem');&lt;br /&gt;                  dv.innerHTML = html;&lt;br /&gt;        &lt;br /&gt;              });&lt;br /&gt;    &lt;br /&gt;          }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;Aqui eu Invoquei&lt;span style=""&gt;  &lt;/span&gt;o método listar o SOAPClient me retornou uma coleção de objetos&lt;span style=""&gt;  &lt;/span&gt;contendo os contatos, ai tem for e um HTML tosco, badabum a mágica esta pronta e é isso espero que seja útil.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Você pode fazer o download do código do tuto &lt;a href="http://newbie-x11.100webspace.net/arquivos/AJAX_II.zip"&gt;aqui&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-8175609777611193239?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/8175609777611193239/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=8175609777611193239&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/8175609777611193239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/8175609777611193239'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/07/ajax-jquery-ii.html' title='AJAX + JQuery II'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-kJRL_SSm6c/Sl3EBmJvq5I/AAAAAAAAAWw/0djUPvV_OeU/s72-c/Tabela.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-3818129432479935097</id><published>2009-06-25T10:48:00.007-03:00</published><updated>2009-09-24T09:42:07.351-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSE'/><title type='text'>Operações com vetor usando SSE</title><content type='html'>Olá pessoal depois de fuçar com o vertex_program/fragment program, descobri o SIMD&lt;br /&gt;(Single Instruction, Multiple Data), o que isso siginifica.&lt;br /&gt;&lt;br /&gt;imagine que temos o vetor a = [x,y,z,w] e b = [x,y,z,w], quando vamos fazer uma operação do tipo c = a * b o processo seria este.&lt;br /&gt;&lt;br /&gt;c.x = a.x * b.x;&lt;br /&gt;c.y = a.y * b.y;&lt;br /&gt;c.z = a.z * b.z;&lt;br /&gt;c.w = a.w * b.w;&lt;br /&gt;&lt;br /&gt;o disassembly deste processo no MSVC++ 2005&lt;br /&gt;&lt;br /&gt;c.x = a.x * b.x;&lt;br /&gt;0041197E  fld         dword ptr [a] &lt;br /&gt;00411981  fmul        dword ptr [b] &lt;br /&gt;00411984  fstp        dword ptr [c] &lt;br /&gt;c.y = a.y * b.y;&lt;br /&gt;00411987  fld         dword ptr [ebp+10h] &lt;br /&gt;0041198A  fmul        dword ptr [ebp+20h] &lt;br /&gt;0041198D  fstp        dword ptr [ebp-10h] &lt;br /&gt;c.z = a.z * b.z;&lt;br /&gt;00411990  fld         dword ptr [ebp+14h] &lt;br /&gt;00411993  fmul        dword ptr [ebp+24h] &lt;br /&gt;00411996  fstp        dword ptr [ebp-0Ch] &lt;br /&gt;c.w = a.w * b.w;&lt;br /&gt;00411999  fld         dword ptr [ebp+18h] &lt;br /&gt;0041199C  fmul        dword ptr [ebp+28h] &lt;br /&gt;0041199F  fstp        dword ptr [ebp-8]&lt;br /&gt;&lt;br /&gt;o gcc é bem mais inteligente que isso (to no maldito windows agora)&lt;br /&gt;&lt;br /&gt;a mesma operação usando SSE, nos dois caso eu não coloquei a parte responsável por pegar os parametros passados p/ a função e o seu retorno. &lt;br /&gt;o abaixo foi escrito p/ o nasm&lt;br /&gt;&lt;br /&gt;mov eax, [ebp+0x8] ;parametro 1 a&lt;br /&gt;mov ebx, [ebp+0xc] ;parametro 2 b&lt;br /&gt;mov ecx, [ebp+0x10] ;parametro 3 c&lt;br /&gt;&lt;br /&gt;movups xmm0, [eax] ;coloca eax em xmm0&lt;br /&gt;movups xmm1, [ebx] ;coloca ebx em xmm1&lt;br /&gt;mulps xmm0, xmm1 ; xmm0 = xmm0 * xmm1&lt;br /&gt;movups [ecx], xmm0 ;move xmm0 ecx (c)&lt;br /&gt;&lt;br /&gt;creio que iriamos economizar alguns ciclos de processamento, então SSE é isto fazer operações com registradores de 128bits (16 bytes).&lt;br /&gt;&lt;br /&gt;pra mais informações na comunidade tem bastante informação, os manuais da intel IA-32 2A e IA-32 2B tem o conjunto de instrução completo.&lt;br /&gt;&lt;br /&gt;o 3DNow da amd e o altiVec do PowerPC tem o mesmo propósito, até o ARM tem um conjunto de instruções vetorias, você pode ser bem criativo ao usar esse conjunto de instruções, por exemplo o memcpy copia 4 bytes de cada vez (ao menos no header que eu vi), usando registradores de 128bits poderiamos mover 16bytes por vez, interessante não.&lt;br /&gt;&lt;br /&gt;coloquei exemplos no link : http://www.mediafire.com/?sharekey=75c36d37bd6d2c0a391d7d881749d3a7e04e75f6e8ebb871&lt;br /&gt;&lt;br /&gt;matematica.zip -&amp;gt; VC++ 2005&lt;br /&gt;vectors.zip -&amp;gt; GCC + nasm&lt;br /&gt;&lt;br /&gt;uma curiosiade é que este é o segredo do PS3 (CELL/B.E) ele tem um porcessador PowerPC (PPE) e 6 processadores (SPE), atualmente o Top 1 da top500.org o RoadRunner tem alguns milhares deste (CELL/B.E).&lt;br /&gt;&lt;br /&gt;se eu falei alguma besteira favor me corrigir.&lt;br /&gt;&lt;br /&gt;veja a &lt;a href="http://newbie-x11.blogspot.com/2009/09/operacoes-com-vetor-usando-sse-parte-ii.html"&gt;Parte II&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Obrigado.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-3818129432479935097?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/3818129432479935097/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=3818129432479935097&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3818129432479935097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3818129432479935097'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/06/operacoes-com-vetor-usando-sse.html' title='Operações com vetor usando SSE'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-6882040060868108998</id><published>2009-06-03T08:40:00.004-03:00</published><updated>2011-02-03T16:57:35.805-02:00</updated><title type='text'>Pato Life Style</title><content type='html'>O jaca a um tempo atrás foi a um parque e Curitiba, e tirou uma foto muito singular de um pato na lagoa, o pato estava tranquilo fintando uma HB na lagoa, depois da foto do pato gerar muita polemica nas nossas discussões por e-mail percebemos toda filosofia em volta daquele pato pense bem na paz e tranquilidade do pato em sua lagoa fintando a duck HB, é esse tipo de coisa que quero pra minha vida a partir dai surgiu a filosofia do PATO Life Style. olhe a imagem e pense um pouco sobre isso.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_-kJRL_SSm6c/SiZiUbqoZSI/AAAAAAAAAUs/5hMlJ-TXyn8/s1600-h/P5240139.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5343066111085143330" src="http://2.bp.blogspot.com/_-kJRL_SSm6c/SiZiUbqoZSI/AAAAAAAAAUs/5hMlJ-TXyn8/s320/P5240139.JPG" style="cursor: pointer; display: block; height: 240px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;só tenho a recomendar pratique o PATO Life Style.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-6882040060868108998?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/6882040060868108998/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=6882040060868108998&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/6882040060868108998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/6882040060868108998'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/06/pato-life-style.html' title='Pato Life Style'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-kJRL_SSm6c/SiZiUbqoZSI/AAAAAAAAAUs/5hMlJ-TXyn8/s72-c/P5240139.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-1584181084783744414</id><published>2009-06-02T09:00:00.002-03:00</published><updated>2009-06-02T09:08:15.778-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><title type='text'>Newbie Game Engine o que ta no forno</title><content type='html'>&lt;p&gt;Pessoal boas novas consegui dar Suporte a ARB_vertex_program e ARB_fragment_program&lt;br /&gt;e os dois funcionarão no linux (w32 sucks), agora vou fazer o tão famoso Cel Shading e deixar minha CPU livre pro ODE fazer o trabalho dele.&gt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Vou começar também o estudo de mapas vou seguir essa  &lt;a href="http://www.lighthouse3d.com/opengl/terrain/index.php3?heightmap"&gt;técnica&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;só depois tenho que pensar na parte de Texturas mesmo se for toon shading ainda vai precisar, tenho que organizar o código padronizar algumas coisas e acho que ja é hora de dividir em namespaces mais isso são contos futuros. A parte de física ta meio abandonada e vai ficar por um tempo vou me concentrar na parte gráfica.&lt;br /&gt;&lt;br /&gt;Até mais.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-1584181084783744414?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/1584181084783744414/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=1584181084783744414&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/1584181084783744414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/1584181084783744414'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/06/newbie-game-engine-o-que-ta-no-forno.html' title='Newbie Game Engine o que ta no forno'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-2409948049281399668</id><published>2009-05-28T14:36:00.003-03:00</published><updated>2009-07-15T09:16:59.145-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BLA BLA BLA'/><title type='text'>Pensamento</title><content type='html'>To começando a achar que ninguém le esse blog.&lt;br /&gt;&lt;br /&gt;e o pior que eu tenho 1 milhão de planos.&lt;br /&gt;&lt;br /&gt;por exemplo:&lt;br /&gt;Fazer um Sistema Operacional Baseado no Minix o código dele é bem pequeno&lt;br /&gt;e tem o livro do Andrew S. Tanenbaum Sistemas Operacionais Moderno que trata justamente da implementação do Minix (o author do livro que escreveu o Minix).&lt;br /&gt;&lt;br /&gt;Escrever drivers pro linux fiz planos de adquirir uma linda LCD de 32 polegadas mas junto com isso um daqules recptores de TV Digital USB e adivinha não existe nenhum na galaxia com driver pro linux tinha um maluco que estava escrevendo um mais não coloquei o Blog dele no favoritos vou procurar denovo (o cara tb tava fazendo a própria maquina de Pinball). &lt;br /&gt;&lt;br /&gt;Claro fazer jogos eu dois amigos [Jaca e Geison] estamos pensando em criar jogos pro Zeebo Genie, acho que devia convidar o Neo Strider também. enquanto isso vou estudando os Shaders e tentar terminar a Newbie Game Engine. podia fazer um port dela pro meu DreamCast (me custo uns R$ 150 ,00 [na verdade uma bota da West Coast]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Aprender Assembly.&lt;br /&gt;Fazer um módulo pra aqueles MP3 Players Alá Foston tocarem .ogg assembly p/ z80&lt;br /&gt;&lt;br /&gt;entre outras ainda bem que o titulo do blog é Armazén de idéias assim fico livre escrever tantos impropérios.&lt;br /&gt;&lt;br /&gt;E claro dominar o mundo.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-2409948049281399668?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/2409948049281399668/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=2409948049281399668&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2409948049281399668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2409948049281399668'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/05/pensamento.html' title='Pensamento'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-3677524167284066088</id><published>2009-05-26T08:34:00.006-03:00</published><updated>2009-07-15T09:10:01.558-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>Programando A GPU</title><content type='html'>A algum tempo atrás comecei a estuda programação da GPU parei quando descobrir que minha maltida placa OnBoard SIS  só suportava OpenGL 1.5 e era processado por Software, por hardware só DirectX que não é o meu caso. mas mesmo assim fiz alguns progressos no estudo&lt;br /&gt;das extensões OpenGL ARB Vertex Program não vou me meter de Roldão e querer dar um tutorial sobre o assunto o que posso fazer é mostrar um exemplo (inútil) e recomendar documentação adequada.&lt;br /&gt;&lt;br /&gt;Begin The Code:&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;/*&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="rem"&gt; * main.cpp&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="rem"&gt; *&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="rem"&gt; *  Created on: 22/04/2009&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="rem"&gt; *      Author: newbie&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="rem"&gt; */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;#include &amp;lt;GL/gl.h&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;#include &amp;lt;GL/glext.h&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;#include &amp;lt;SDL/SDL.h&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;#include &amp;lt;GL/glu.h&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;#include &amp;lt;math.h&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;#include &amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;.h&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&lt;span class="rem"&gt;/**&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&lt;span class="rem"&gt; * &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&lt;span class="rem"&gt; Representa um vetor tridimensional (x,y,z)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="rem"&gt; * &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&lt;span class="rem"&gt; *&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&lt;span class="rem"&gt; */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;typedef &lt;span class="kwrd"&gt;struct&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    &lt;span class="kwrd"&gt;float&lt;/span&gt; x;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    &lt;span class="kwrd"&gt;float&lt;/span&gt; y;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    &lt;span class="kwrd"&gt;float&lt;/span&gt; z;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;}vec3d;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;&lt;span class="rem"&gt;/**&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;&lt;span class="rem"&gt; * angulos da camera xyz&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;&lt;span class="rem"&gt; */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;vec3d angles = {0.0f,0.0f,0.0f};&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;&lt;span class="rem"&gt;/**&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;&lt;span class="rem"&gt; * posição da camera&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;&lt;span class="rem"&gt; */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;vec3d position = {0.0f,0.0f,-5.0f};&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;&lt;span class="rem"&gt;/**&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;&lt;span class="rem"&gt; * O vertex program e carregado de uma string isso&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;&lt;span class="rem"&gt; * se mostra interessante pois podemos carregar&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;&lt;span class="rem"&gt; * nossas operacoes com vertice dinamicamente.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;&lt;span class="rem"&gt; * &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;&lt;span class="rem"&gt; * segue os links que o vao ajudar com o estudo&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;&lt;span class="rem"&gt; * do vertex program&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;&lt;span class="rem"&gt; * &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;&lt;span class="rem"&gt; * especificacao official (ARB) http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_program.txt&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;&lt;span class="rem"&gt; * tuorial GDC 2003 ARB Vertex Program &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;&lt;span class="rem"&gt; * http://developer.nvidia.com/docs/IO/8230/GDC2003_OGL_ARBVertexProgram.pdf&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;&lt;span class="rem"&gt; */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;&lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;char&lt;/span&gt; arbvp[] = &lt;span class="str"&gt;"!!ARBvp1.0 "&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;             &lt;span class="str"&gt;"#na linha acima e assinatura do fragment program"&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;             &lt;span class="str"&gt;"PARAM mvp[4] = { state.matrix.mvp }; #mvp[4] = model view projection matrix reand-only"&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;             &lt;span class="str"&gt;"PARAM yellow = {1.0,1.0,0.0,0.0}; #constante read-only"&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;             &lt;span class="str"&gt;"OUTPUT outPosition = result.position; #obvio"&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;             &lt;span class="str"&gt;"MOV result.color, vertex.color; #MOV destino,fonte"&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;             &lt;span class="str"&gt;"#dot product 4 componentes  dst.x,vertex1,vertex2"&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;             &lt;span class="str"&gt;"DP4 outPosition.x, mvp[0], vertex.position; "&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;             &lt;span class="str"&gt;"DP4 outPosition.y, mvp[1], vertex.position;"&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;             &lt;span class="str"&gt;"DP4 outPosition.z, mvp[2], vertex.position;"&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;             &lt;span class="str"&gt;"DP4 outPosition.w, mvp[3], vertex.position;"&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;             &lt;span class="str"&gt;"MOV result.color, yellow; #MOV dst,src"&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;             &lt;span class="str"&gt;"END"&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; quit_tutorial ( &lt;span class="kwrd"&gt;int&lt;/span&gt; code )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;{   SDL_Quit( );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;   &lt;span class="rem"&gt;//dWorldDestroy(world);&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;    &lt;span class="rem"&gt;/* Exit program. */&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;   exit( code );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; handle_key_down( SDL_keysym* keysym )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;   &lt;span class="kwrd"&gt;switch&lt;/span&gt;( keysym-&amp;gt;sym )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;     {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;      &lt;span class="kwrd"&gt;case&lt;/span&gt; SDLK_ESCAPE:&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;        quit_tutorial( 0 );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;        &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;      &lt;span class="kwrd"&gt;default&lt;/span&gt;:&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;        &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;     }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; process_events( &lt;span class="kwrd"&gt;void&lt;/span&gt; )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;   SDL_Event &lt;span class="kwrd"&gt;event&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;   &lt;span class="kwrd"&gt;while&lt;/span&gt;( SDL_PollEvent( &amp;amp;&lt;span class="kwrd"&gt;event&lt;/span&gt; ) )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;     {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;        &lt;span class="kwrd"&gt;switch&lt;/span&gt;( &lt;span class="kwrd"&gt;event&lt;/span&gt;.type )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;      {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  97:  &lt;/span&gt;       &lt;span class="kwrd"&gt;case&lt;/span&gt; SDL_KEYUP:&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  98:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  99:  &lt;/span&gt;         handle_key_down( &amp;amp;&lt;span class="kwrd"&gt;event&lt;/span&gt;.key.keysym );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 100:  &lt;/span&gt;         &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;event&lt;/span&gt;.key.keysym.sym == SDLK_LEFT)&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 101:  &lt;/span&gt;             angles.y += cosf(M_PI/4.0f);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 102:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 103:  &lt;/span&gt;         &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 104:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 105:  &lt;/span&gt;       &lt;span class="kwrd"&gt;case&lt;/span&gt; SDL_MOUSEMOTION:&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 106:  &lt;/span&gt;       &lt;span class="kwrd"&gt;case&lt;/span&gt; SDL_MOUSEBUTTONDOWN:&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 107:  &lt;/span&gt;           &lt;span class="rem"&gt;//TODO os angulos devem ser convertidos de radianos p/ graus&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 108:  &lt;/span&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.state == 1 &amp;amp;&amp;amp; &lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.xrel &amp;gt; 0 )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 109:  &lt;/span&gt;           {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 110:  &lt;/span&gt;               angles.y += cosf(M_PI/8.0f);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 111:  &lt;/span&gt;           }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 112:  &lt;/span&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.state == 1 &amp;amp;&amp;amp; &lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.xrel &amp;lt; 0 )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 113:  &lt;/span&gt;           {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 114:  &lt;/span&gt;               angles.y -= cosf(M_PI/8.0f);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 115:  &lt;/span&gt;           }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 116:  &lt;/span&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.state == 1 &amp;amp;&amp;amp; &lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.yrel &amp;gt; 0 )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 117:  &lt;/span&gt;           {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 118:  &lt;/span&gt;               angles.x += cosf(M_PI/8.0f);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 119:  &lt;/span&gt;           }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 120:  &lt;/span&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.state == 1 &amp;amp;&amp;amp; &lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.yrel &amp;lt; 0 )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 121:  &lt;/span&gt;           {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 122:  &lt;/span&gt;               angles.x -= cosf(M_PI/8.0f);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 123:  &lt;/span&gt;           }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 124:  &lt;/span&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.state == SDL_BUTTON(3) &amp;amp;&amp;amp; &lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.yrel &amp;gt; 0 )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 125:  &lt;/span&gt;           {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 126:  &lt;/span&gt;               position.z -= 3.5f;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 127:  &lt;/span&gt;           }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 128:  &lt;/span&gt;           &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.state == SDL_BUTTON(3) &amp;amp;&amp;amp; &lt;span class="kwrd"&gt;event&lt;/span&gt;.motion.yrel &amp;lt; 0 )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 129:  &lt;/span&gt;           {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 130:  &lt;/span&gt;               position.z += 3.5f;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 131:  &lt;/span&gt;           }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 132:  &lt;/span&gt;           &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 133:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 134:  &lt;/span&gt;       &lt;span class="kwrd"&gt;case&lt;/span&gt; SDL_QUIT:&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 135:  &lt;/span&gt;         quit_tutorial(0);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 136:  &lt;/span&gt;      }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 137:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 138:  &lt;/span&gt;     }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 139:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 140:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 141:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 142:  &lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; draw_screen( &lt;span class="kwrd"&gt;void&lt;/span&gt; )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 143:  &lt;/span&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 144:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 145:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 146:  &lt;/span&gt;   glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 147:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 148:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 149:  &lt;/span&gt;   glMatrixMode(GL_MODELVIEW);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 150:  &lt;/span&gt;   glLoadIdentity();&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 151:  &lt;/span&gt;   glTranslatef(position.x,position.y,position.z);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 152:  &lt;/span&gt;   glRotatef(angles.x,1.0f,0.0f,0.0f);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 153:  &lt;/span&gt;   glRotatef(angles.y,0.f,1.0f,0.0f);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 154:  &lt;/span&gt;   glRotatef(angles.z,0.f,0.0f,1.0f);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 155:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 156:  &lt;/span&gt;   glEnable(GL_VERTEX_PROGRAM_ARB);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 157:  &lt;/span&gt;   glBegin(GL_TRIANGLES);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 158:  &lt;/span&gt;   glVertex3f(0.0f,-1.0f,0.0f);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 159:  &lt;/span&gt;   glVertex3f(1.0f,0.0f,0.0f);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 160:  &lt;/span&gt;   glVertex3f(-1.0f,0.0f,0.0f);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 161:  &lt;/span&gt;   glEnd();&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 162:  &lt;/span&gt;   glDisable(GL_VERTEX_PROGRAM_ARB);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 163:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 164:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 165:  &lt;/span&gt;   SDL_GL_SwapBuffers( );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 166:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 167:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 168:  &lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; setup_opengl( &lt;span class="kwrd"&gt;int&lt;/span&gt; width, &lt;span class="kwrd"&gt;int&lt;/span&gt; height )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 169:  &lt;/span&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 170:  &lt;/span&gt;   &lt;span class="kwrd"&gt;float&lt;/span&gt; ratio = (&lt;span class="kwrd"&gt;float&lt;/span&gt;) width / (&lt;span class="kwrd"&gt;float&lt;/span&gt;) height;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 171:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 172:  &lt;/span&gt;   glShadeModel( GL_SMOOTH );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 173:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 174:  &lt;/span&gt;   glCullFace( GL_BACK );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 175:  &lt;/span&gt;   glFrontFace( GL_CCW );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 176:  &lt;/span&gt;   glEnable( GL_CULL_FACE );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 177:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 178:  &lt;/span&gt;   glClearColor( 0.5f, 0.5f, 0.5f, 0.0f );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 179:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 180:  &lt;/span&gt;   glViewport( 0, 0, width, height );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 181:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 182:  &lt;/span&gt;   glMatrixMode( GL_PROJECTION );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 183:  &lt;/span&gt;   glLoadIdentity( );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 184:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 185:  &lt;/span&gt;   gluPerspective( 60.0, ratio, 1.0, 1024.0 );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 186:  &lt;/span&gt;   glEnable(GL_LIGHTING);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 187:  &lt;/span&gt;   glEnable(GL_LIGHT0);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 188:  &lt;/span&gt;   glEnable(GL_DEPTH_TEST);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 189:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 190:  &lt;/span&gt;   GLfloat light_pos[] = {4.0f,10.0f,0.0f,0.0f};&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 191:  &lt;/span&gt;   GLfloat light_Ka[]  = {0.0f,0.0f,3.0f,1.0f};&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 192:  &lt;/span&gt;   GLfloat light_Kd[]  = {1.0f,0.0f,0.0f,1.0f};&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 193:  &lt;/span&gt;   GLfloat light_Ks[]  = {1.0f,1.0f,1.0f,1.0f};&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 194:  &lt;/span&gt;   GLfloat lmKa[] = {0.0f,0.0f,0.0f,0.0f};&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 195:  &lt;/span&gt;   glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER, 0);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 196:  &lt;/span&gt;   glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, 0);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 197:  &lt;/span&gt;   glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmKa);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 198:  &lt;/span&gt;   glLightfv(GL_LIGHT0,GL_POSITION,light_pos);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 199:  &lt;/span&gt;   glLightfv(GL_LIGHT0,GL_AMBIENT,light_Ka);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 200:  &lt;/span&gt;   glLightfv(GL_LIGHT0,GL_DIFFUSE,light_Kd);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 201:  &lt;/span&gt;   glLightfv(GL_LIGHT0,GL_SPECULAR,light_Ks);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 202:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 203:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 204:  &lt;/span&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt; main( &lt;span class="kwrd"&gt;int&lt;/span&gt; argc, &lt;span class="kwrd"&gt;char&lt;/span&gt;* argv[] )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 205:  &lt;/span&gt;{&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 206:  &lt;/span&gt;   &lt;span class="kwrd"&gt;const&lt;/span&gt; SDL_VideoInfo* info = NULL;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 207:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 208:  &lt;/span&gt;   &lt;span class="kwrd"&gt;int&lt;/span&gt; width = 0;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 209:  &lt;/span&gt;   &lt;span class="kwrd"&gt;int&lt;/span&gt; height = 0;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 210:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 211:  &lt;/span&gt;   &lt;span class="kwrd"&gt;int&lt;/span&gt; bpp = 0;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 212:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 213:  &lt;/span&gt;   &lt;span class="kwrd"&gt;int&lt;/span&gt; flags = 0;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 214:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 215:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 216:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 217:  &lt;/span&gt;   &lt;span class="kwrd"&gt;if&lt;/span&gt;( SDL_Init( SDL_INIT_VIDEO|SDL_INIT_TIMER ) &amp;lt; 0 )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 218:  &lt;/span&gt;     {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 219:  &lt;/span&gt;    fprintf( stderr, &lt;span class="str"&gt;"Video initialization failed: %s\n"&lt;/span&gt;,&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 220:  &lt;/span&gt;         SDL_GetError( ) );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 221:  &lt;/span&gt;    quit_tutorial( 1 );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 222:  &lt;/span&gt;     }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 223:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 224:  &lt;/span&gt;   info = SDL_GetVideoInfo( );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 225:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 226:  &lt;/span&gt;   &lt;span class="kwrd"&gt;if&lt;/span&gt;( !info )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 227:  &lt;/span&gt;     {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 228:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 229:  &lt;/span&gt;    fprintf( stderr, &lt;span class="str"&gt;"Video query failed: %s\n"&lt;/span&gt;,&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 230:  &lt;/span&gt;         SDL_GetError( ) );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 231:  &lt;/span&gt;    quit_tutorial( 1 );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 232:  &lt;/span&gt;     }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 233:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 234:  &lt;/span&gt;   width = 400;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 235:  &lt;/span&gt;   height = 400;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 236:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 237:  &lt;/span&gt;   bpp = info-&amp;gt;vfmt-&amp;gt;BitsPerPixel;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 238:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 239:  &lt;/span&gt;   SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 240:  &lt;/span&gt;   SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 241:  &lt;/span&gt;   SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 242:  &lt;/span&gt;   SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 243:  &lt;/span&gt;   SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 244:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 245:  &lt;/span&gt;   flags = SDL_OPENGL;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 246:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 247:  &lt;/span&gt;   &lt;span class="kwrd"&gt;if&lt;/span&gt;( SDL_SetVideoMode( width, height, bpp, flags ) == 0 )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 248:  &lt;/span&gt;     {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 249:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 250:  &lt;/span&gt;    fprintf( stderr, &lt;span class="str"&gt;"Video mode set failed: %s\n"&lt;/span&gt;,&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 251:  &lt;/span&gt;         SDL_GetError( ) );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 252:  &lt;/span&gt;    quit_tutorial( 1 );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 253:  &lt;/span&gt;     }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 254:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 255:  &lt;/span&gt;   GLuint progid;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 256:  &lt;/span&gt;   glGenProgramsARB(1,&amp;amp;progid);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 257:  &lt;/span&gt;   glBindProgramARB(GL_VERTEX_PROGRAM_ARB,progid);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 258:  &lt;/span&gt;   glProgramStringARB(GL_VERTEX_PROGRAM_ARB,GL_PROGRAM_FORMAT_ASCII_ARB,strlen(arbvp),arbvp);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 259:  &lt;/span&gt;   &lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 260:  &lt;/span&gt;   &lt;span class="kwrd"&gt;if&lt;/span&gt; (GL_INVALID_OPERATION == glGetError())&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 261:  &lt;/span&gt;   {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 262:  &lt;/span&gt;    printf(&lt;span class="str"&gt;"erro\n"&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 263:  &lt;/span&gt;    quit_tutorial(0);&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 264:  &lt;/span&gt;   }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 265:  &lt;/span&gt;   setup_opengl( width, height );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 266:  &lt;/span&gt;   &lt;span class="kwrd"&gt;while&lt;/span&gt;( 1 )&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 267:  &lt;/span&gt;     {&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 268:  &lt;/span&gt;    process_events( );&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 269:  &lt;/span&gt;    ;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 270:  &lt;/span&gt;    draw_screen();&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 271:  &lt;/span&gt;     }&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 272:  &lt;/span&gt;   &lt;span class="kwrd"&gt;return&lt;/span&gt; 0;&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 273:  &lt;/span&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_-kJRL_SSm6c/ShvV_P_7chI/AAAAAAAAAUM/rekEPhyAWsA/s1600-h/shot.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 304px; height: 320px;" src="http://1.bp.blogspot.com/_-kJRL_SSm6c/ShvV_P_7chI/AAAAAAAAAUM/rekEPhyAWsA/s320/shot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5340097065780998674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ta ta é só um quadro Amarelo mais já serve como Getting Started, vou ver c consigo fazer um Phong Light.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-3677524167284066088?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/3677524167284066088/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=3677524167284066088&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3677524167284066088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3677524167284066088'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/05/programando-gpu.html' title='Programando A GPU'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_-kJRL_SSm6c/ShvV_P_7chI/AAAAAAAAAUM/rekEPhyAWsA/s72-c/shot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-2190934860494002626</id><published>2009-05-14T11:39:00.004-03:00</published><updated>2009-05-15T08:32:50.216-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><title type='text'>Newbie Engine 0.2 Now</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_-kJRL_SSm6c/SgwuE3KaCgI/AAAAAAAAATs/9gJZk0lajag/s1600-h/slackDeskop4_.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5335690319589149186" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 304px; CURSOR: hand; HEIGHT: 320px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_-kJRL_SSm6c/SgwuE3KaCgI/AAAAAAAAATs/9gJZk0lajag/s320/slackDeskop4_.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bom pessoal acabei de fazer o commit no svn depois de 5 meses, tem bastante código novo lá.&lt;br /&gt;&lt;br /&gt;http://newbie-engine.svn.sourceforge.net/viewvc/newbie-engine/&lt;br /&gt;&lt;br /&gt;só tenho que mudar o Makefile pra compilar a nova versão (Estou trabalhando com eclipse CDT agora). e tb criar um versão pro Dev-C++ mais isso fica pro próximo RC.&lt;br /&gt;&lt;br /&gt;temos mais um membro no projeto Geison Munhoz, ele vai se aventurar na parte de&lt;br /&gt;Audio, não sei se vai dar tempo mais mais ainda estamos na GPC 08 a PDJ.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-2190934860494002626?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/2190934860494002626/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=2190934860494002626&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2190934860494002626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2190934860494002626'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/05/newbie-engine-02-now.html' title='Newbie Engine 0.2 Now'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-kJRL_SSm6c/SgwuE3KaCgI/AAAAAAAAATs/9gJZk0lajag/s72-c/slackDeskop4_.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-2292559226521120314</id><published>2009-05-13T19:37:00.002-03:00</published><updated>2009-05-13T19:42:23.361-03:00</updated><title type='text'>Source Forget Project Awards</title><content type='html'>Bom me veio agora na mente a figura de Richard Stallman, por isso fui xiita o suficiente p/ nomear a engine.&lt;br /&gt;&lt;br /&gt;The following project(s) are nominated for a 2009 Community Choice Award:&lt;br /&gt;Newbie Game Engine for Best Project for Academia&lt;br /&gt;Don't forget to show your friends how you feel about the projects you nominated!Get the word out using your social network.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/community/cca09/nominate/?project_name=Newbie Game Engine&amp;project_url=http://newbie-x11.blogspot.com/"&gt;&lt;img src="http://sourceforge.net/images/cca/cca_nominate.png" border="0"/&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-2292559226521120314?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/2292559226521120314/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=2292559226521120314&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2292559226521120314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2292559226521120314'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/05/source-forget-project-awards.html' title='Source Forget Project Awards'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-857378085910941016</id><published>2009-05-13T09:17:00.003-03:00</published><updated>2009-07-15T09:17:50.949-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='humor'/><title type='text'>Numeros Imaginarios</title><content type='html'>Foi assim que me senti.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_-kJRL_SSm6c/Sgq7KEHHtxI/AAAAAAAAATk/hSPS-T2rq9s/s1600-h/imaginario.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5335282490150467346" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 266px; CURSOR: hand; HEIGHT: 320px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_-kJRL_SSm6c/Sgq7KEHHtxI/AAAAAAAAATk/hSPS-T2rq9s/s320/imaginario.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.unidev.tecnologia.ws/phpbb3/viewtopic.php?f=33&amp;amp;t=44997"&gt;http://www.unidev.tecnologia.ws/phpbb3/viewtopic.php?f=33&amp;amp;t=44997&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-857378085910941016?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/857378085910941016/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=857378085910941016&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/857378085910941016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/857378085910941016'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/05/numeros-imaginarios.html' title='Numeros Imaginarios'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_-kJRL_SSm6c/Sgq7KEHHtxI/AAAAAAAAATk/hSPS-T2rq9s/s72-c/imaginario.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-6743648581175403532</id><published>2009-05-06T09:36:00.015-03:00</published><updated>2009-07-15T09:15:54.526-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>JQuery + Ajax Parte I</title><content type='html'>Olá galera neste post vou demostrar como fazer uma chamada AJAX com auxílio da JQeury, no Visal Studio 2005.&lt;br /&gt;&lt;br /&gt;Primeiro crie um novo WebSite e adicione ao mesmo um Generic Handler, o generic handler é uma classe do que implementa o IHttpHandler, até que a expreriência me prove o contrário este recurso me parece perfeito pra trabalhar com AJAX, nela implementamos o método ProcessRequest.&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ProcessRequest (HttpContext context) {&lt;br /&gt;&lt;pre class="csharpcode"&gt;        context.Response.ContentType = &lt;span class="str"&gt;"text/plain"&lt;/span&gt;;&lt;br /&gt;context.Response.Write(&lt;span class="str"&gt;"Hello World"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;span style="font-family:Georgia,serif;"&gt;&lt;br /&gt;no HttpContext temos Request e um Response (HTTP), já se mostrou util desde retornar&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Georgia,serif;"&gt;resultados plain text, como também um gerador de thunbnail.&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:Georgia,serif;"&gt;Vamos por a mão na massa, para deixar o tutorial mais interessante vamos &lt;/span&gt;&lt;span style="font-family:Georgia,serif;"&gt;receber através da request.QueryString um nome fazer uma consulta em xml e retornar o nome o telefone ao cliente então adicione o arquivo&lt;br /&gt;&lt;br /&gt;ao seu WebSite&lt;/span&gt;&lt;pre class="csharpcode"&gt;&lt;span style="font-family:Georgia;"&gt; &lt;img id="BLOGGER_PHOTO_ID_5332696709146877522" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 206px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_-kJRL_SSm6c/SgGLZzOYHlI/AAAAAAAAASw/LFXShSspXtY/s320/xml.PNG" border="0" /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;o método ProcessRequest ficará assim.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ProcessRequest (HttpContext context) {&lt;br /&gt;HttpResponse response = context.Response;&lt;br /&gt;HttpRequest request = context.Request;&lt;br /&gt;XmlDocument doc = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;br /&gt;doc.Load(request.MapPath(&lt;span class="str"&gt;"contatos.xml"&lt;/span&gt;));&lt;br /&gt;XmlNode node = doc.SelectSingleNode(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"/contatos/contato[nome = '{0}']"&lt;/span&gt;,request.QueryString[&lt;span class="str"&gt;"nome"&lt;/span&gt;]));&lt;br /&gt;response.ContentType = &lt;span class="str"&gt;"text/plain"&lt;/span&gt;;&lt;br /&gt;response.Write(node.ChildNodes[1].InnerXml);&lt;br /&gt;response.End();&lt;/p&gt;&lt;pre class="csharpcode"&gt;}&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;agora no vá para defualt.aspx&lt;br /&gt;mas antes vá em &lt;a href="http://code.google.com/p/jqueryjs/"&gt;http://code.google.com/p/jqueryjs/&lt;/a&gt; baixe a ultima versão e adicione ao seu Default.aspx&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;o código seria este.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5332714271747916066" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 344px; CURSOR: hand; HEIGHT: 286px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_-kJRL_SSm6c/SgGbYFAwwSI/AAAAAAAAATA/bJlhQcFsQ2c/s320/code.PNG" border="0" /&gt;&lt;br /&gt;creio que a única coisa digna de comentário seja&lt;br /&gt;&lt;br /&gt;$.get('Handler.ashx',{nome : _nome},function(data)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;alert(data);&lt;br /&gt;&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;$.get faz uma chamada para handler.ashx passa nome como QueryString, quando recebe o retorno chama a function(data){} (data é o que ele recebeu).&lt;br /&gt;&lt;br /&gt;você pode fazer o download do código fonte aqui.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://br.geocities.com/newbie_x11/AJAX_I.zip"&gt;http://br.geocities.com/newbie_x11/AJAX_I.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;espero que tenha gostado até mais.&lt;br /&gt;&lt;br /&gt;Sabe este editor do blogspot é norjento, desculpe pela má formatação, mas espero que tenha gostado.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-6743648581175403532?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/6743648581175403532/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=6743648581175403532&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/6743648581175403532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/6743648581175403532'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/05/jquery-ajax-parte-i.html' title='JQuery + Ajax Parte I'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_-kJRL_SSm6c/SgGLZzOYHlI/AAAAAAAAASw/LFXShSspXtY/s72-c/xml.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-5912425228833380351</id><published>2009-04-13T14:29:00.002-03:00</published><updated>2009-04-13T14:32:08.455-03:00</updated><title type='text'>Nova versão no forno</title><content type='html'>andei codadando um pouco nos últimos tempos, o que está por vir:&lt;br /&gt;-Texturas&lt;br /&gt;-Shader (ARB_vertex_program/ARB_fragment_program)&lt;br /&gt;-Sistema de Particulas&lt;br /&gt;-e uma primeira simulação como demo de técnologia&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;creio que a partir desse ponto vou trabalhar um pouco no contest da PDJ.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-5912425228833380351?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/5912425228833380351/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=5912425228833380351&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/5912425228833380351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/5912425228833380351'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/04/nova-versao-no-forno.html' title='Nova versão no forno'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-1177940967734896519</id><published>2009-01-28T08:18:00.002-02:00</published><updated>2009-07-15T09:15:29.656-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BLA BLA BLA'/><title type='text'>Submundo dos Games.</title><content type='html'>&lt;span class="postbody"&gt;Então, acabei de ler uma matéria na revista "o globo Digital" de 19 de janeiro 2009, e fiquei intrigado com oq li.&lt;br /&gt;&lt;br /&gt;Todos sabemos q em jogos do tipo Massive ou mesmo jogos como o Warcraft3 no qual possuem um sistema de níveis, rankings, itens, e coisas do tipo, acabam existindo hackers que roubam contas, scammers que enganam os outros(roubam itens), e os pros, que em certo momento vendem seus itens, ou mesmo cobram uma taxa para evoluir o nivel da sua conta, como é o caso do warcraft3.&lt;br /&gt;até ai blz, até q nessa matéria eles citam a pratica como "trabalho escravo", no caso de chineses que jogam e recebem para adquirirem niveis altos e itens raros nos jogos, e descrevem esse "mercado" que segundo a revista gera meio bilhão de dólares por ano, como obscuro.&lt;br /&gt;&lt;br /&gt;Na China, Korea e Suecia o governo está cobrando impostos (não sei de q maneira) para "bens virtuais". Essa prática já está chegando aos EUA.&lt;br /&gt;Seria no minimo hilário ter um imposto desse tipo aqui no Brasil, e não duvido nada que em breve terá.&lt;br /&gt;&lt;br /&gt;Pelo visto esse mercado está despertando o interesse de mta gente, ainda na materia da revista, li que já criaram empresas especializadas em "vigiar o jogo", pelo oq entendi é um empregado da empresa, que fica vigiando o que os jogadores estão fazendo dentro do jogo, com um personagem e se perceber alguma atitude suspeita, vai fazer algo para repreende-lo.&lt;br /&gt;&lt;br /&gt;O que é mais bizarro, o adolescente comprar um item por dinheiro real, ou cobrarem impostos sobre tal pratica?&lt;br /&gt;&lt;br /&gt;Fonte: http://www.programadoresdejogos.com/forum/viewtopic.php?p=64461&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-1177940967734896519?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/1177940967734896519/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=1177940967734896519&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/1177940967734896519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/1177940967734896519'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/01/submundo-dos-games.html' title='Submundo dos Games.'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-4450113707099432323</id><published>2009-01-26T15:14:00.007-02:00</published><updated>2009-07-15T09:11:11.487-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Performace: DataSet x XPath</title><content type='html'>Aqui no trabalho me mandarão otimizar a forma como o XML é manipulado (Muitos arquivos, muitos mesmo), aém de diminuir o número de chamadas para esses arquivos também me surgiu de otimizar a gravação que era feita com DataSet fiz um Benchmark da alteração de um único registro usando DataSet x XPath, o ganho com XPath foi de 900ms (bem interessante não?)&lt;br /&gt;&lt;br /&gt;só desculpa pela formatação do código eu o template do blogger e o FireFox não entramos em um acordo. logo vou corrigir.&lt;br /&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="rem"&gt;//usando DataSet&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; alterarCampo(&lt;span class="kwrd"&gt;string&lt;/span&gt; path, &lt;span class="kwrd"&gt;int&lt;/span&gt; id, Parametro parametro)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;bool&lt;/span&gt; resultado = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            DataSet dataSet = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataSet();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                dataSet.ReadXml(path);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                dataSet.Tables[0].DefaultView.RowFilter = &lt;span class="str"&gt;"ID = "&lt;/span&gt; + id.ToString();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                dataSet.Tables[0].DefaultView[0][parametro.Campo] = parametro.Valor;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                dataSet.Tables[0].WriteXml(path);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                resultado = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                resultado = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            dataSet = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; resultado;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&lt;span class="rem"&gt;//Usando XPath&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; alterarCampo(&lt;span class="kwrd"&gt;string&lt;/span&gt; path, &lt;span class="kwrd"&gt;int&lt;/span&gt; id, Parametro parametro)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            &lt;span class="kwrd"&gt;bool&lt;/span&gt; resultado = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                StreamReader stream = &lt;span class="kwrd"&gt;new&lt;/span&gt; StreamReader(File.Open(path, FileMode.Open));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;                XmlDocument doc = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;                &lt;span class="kwrd"&gt;string&lt;/span&gt; xPathStr = String.Format(&lt;span class="str"&gt;"/CATALOGO/LIVRO[ID = '{0}']"&lt;/span&gt;, iclipping);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;                doc.LoadXml(stream.ReadToEnd());&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;                stream.Close();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                stream = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;                XPathNavigator navigator = doc.CreateNavigator().SelectSingleNode(xPathStr);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                XPathNavigator nCampo = navigator.SelectSingleNode(parametro.Campo);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;                &lt;span class="rem"&gt;//O elemento nao existe&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (nCampo == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;                {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;                    navigator.AppendChild(String.Format(&lt;span class="str"&gt;"&amp;lt;{0}&amp;gt;{1}&amp;lt;/{0}&amp;gt;"&lt;/span&gt;, parametro.Campo, parametro.Valor));&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;                }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="rem"&gt;//logo existe&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;                {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;                    nCampo.SetValue(parametro.Valor);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;                }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;                FileStream fstream = File.Open(path, FileMode.Open);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;                doc.Save(fstream);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;                fstream.Close();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;                resultado = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;                resultado = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; resultado;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;Quanto aos resultados foi esse p número que consegui (Visual Studio Test)&lt;br /&gt;&lt;div style="overflow:auto"&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="0" cellspacing="0" cols="7" frame="void" rules="none"&gt;  &lt;colgroup&gt;&lt;col width="282"&gt;&lt;col width="378"&gt;&lt;col width="86"&gt;&lt;col width="102"&gt;&lt;col width="102"&gt;&lt;col width="131"&gt;&lt;col width="101"&gt;&lt;/colgroup&gt;  &lt;tbody&gt;   &lt;tr&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" align="left" height="18" width="282"&gt;ModificarXML&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" align="left" width="378"&gt;alterarCampo(string path, int iclipping, Parametro parametro)&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" align="left" width="86"&gt;BOX71&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" sdval="39835,476400463" sdnum="1046;0;DD/MM/AA HH:MM" align="right" width="102"&gt;22/01/09 11:26&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" sdval="39835,476412037" sdnum="1046;0;DD/MM/AA HH:MM" align="right" width="102"&gt;22/01/09 11:26&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" align="left" width="131"&gt;00:00:00.3165278&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" align="left" width="101"&gt;Xpath&lt;/td&gt;   &lt;/tr&gt;  &lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;&lt;table border="0" cellspacing="0" cols="7" frame="void" rules="none"&gt;  &lt;colgroup&gt;&lt;col width="282"&gt;&lt;col width="378"&gt;&lt;col width="86"&gt;&lt;col width="102"&gt;&lt;col width="102"&gt;&lt;col width="131"&gt;&lt;col width="101"&gt;&lt;/colgroup&gt;  &lt;tbody&gt;   &lt;tr&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" align="left" height="18" width="282"&gt;ModificarXML&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" align="left" width="378"&gt;alterarCampo(string path, int iclipping, Parametro parametro)&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" align="left" width="86"&gt;BOX71&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" sdval="39835,4935763889" sdnum="1046;0;DD/MM/AA HH:MM" align="right" width="102"&gt;22/01/09 11:50&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" sdval="39835,493599537" sdnum="1046;0;DD/MM/AA HH:MM" align="right" width="102"&gt;22/01/09 11:50&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" align="left" width="131"&gt;00:00:01.2892166&lt;/td&gt;    &lt;td style="border: 1px solid rgb(0, 0, 0);" align="left" width="101"&gt;DataSet&lt;/td&gt;   &lt;/tr&gt;  &lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Maquina : Intel 2140 2x1.6GHz 2GB Ram&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-4450113707099432323?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/4450113707099432323/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=4450113707099432323&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4450113707099432323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4450113707099432323'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/01/performace-dataset-x-xpath.html' title='Performace: DataSet x XPath'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-3193505595654440305</id><published>2009-01-26T15:06:00.003-02:00</published><updated>2009-07-15T09:19:12.579-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BLA BLA BLA'/><title type='text'>Notebook e Infertilidade</title><content type='html'>pesquisando sobre suporte para notebook pra poder trabalhar com ele no colo o calor me encomodava tanto&lt;br /&gt;&lt;br /&gt;descobri o seguinte&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fatores de Estilo de Vida: Remédios como a Sulfasalazina, a Cimetidina, a Nitrofurantoina; o Chumbo (presente em alguns remédios neurológicos); o Arsênico; e drogas ilícitas como a Maconha, os Esteróides Anabolizantes, e a Cocaína podem interferir com a capacidade de produzir espermatozóides (espermatogênese). Medicamentos anti-hipertensivos  (como alguns diuréticos) podem prejudicar a ejaculação. O cigarro tem um efeito moderado, porém negativo na espermatogênese e pode contribuir para a infertilidade. &lt;span style="color: rgb(255, 0, 0);"&gt;A exposição excessiva ao calor como o de banheiras quentes ou saunas pode diminuir a produção do esperma.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A zona térmica do meu notebook fica em média a 55º Graus Celcius, numca mais vou usar ele no colo (até conseguir um suporte)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-3193505595654440305?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/3193505595654440305/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=3193505595654440305&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3193505595654440305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3193505595654440305'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/01/notebook-e-infertilidade.html' title='Notebook e Infertilidade'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-8924900789536631850</id><published>2009-01-24T14:44:00.007-02:00</published><updated>2009-07-15T09:33:00.777-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Máscaras JQuery</title><content type='html'>Bom estou fazendo uns freela em ASP.NET/C#, e me surgiu algumas gracinhas em AJAX vou postar aqui, o primeiro post é relacionado a mascáras tinha procurado por algum tempo em fracasso éssa semana achei sem querer, hoje testei. você vai prescisar da &lt;a href="http://jquery.com/" target="_blank"&gt;JQUery&lt;/a&gt;, e um plug-in para &lt;a href="http://digitalbush.com/projects/masked-input-plugin/" target="_blank"&gt;máscara&lt;/a&gt; [data jquery] é bem simples usar o download do código pode ser feito [&lt;a href="http://br.geocities.com/newbie_x11/JQuery-mascara.tar.gz"&gt;aqui&lt;/a&gt;]&lt;br /&gt;o maldito blogspot acabou co com a visualização&lt;br /&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;br /&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;="1.0"&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;="UTF-8"&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;     &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Strict//EN"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt; &lt;span class="attr"&gt;xml:lang&lt;/span&gt;&lt;span class="kwrd"&gt;="en"&lt;/span&gt; &lt;span class="attr"&gt;lang&lt;/span&gt;&lt;span class="kwrd"&gt;="en"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;JQuery&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="jquery-min.js"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;  &amp;lt;/head&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;  &amp;lt;body&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;lt;form id=&lt;span class="str"&gt;"formCadastro"&lt;/span&gt; &amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &amp;lt;table &amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &amp;lt;TD&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    Data&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &amp;lt;/TD&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &amp;lt;TD&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    &amp;lt;input type=&lt;span class="str"&gt;"text"&lt;/span&gt; id=&lt;span class="str"&gt;"txtData"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    &amp;lt;/TD&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    &amp;lt;/TR&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    &amp;lt;tr&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;    &amp;lt;TD&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    Custom&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    &amp;lt;/TD&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    &amp;lt;TD&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;     &amp;lt;input type=&lt;span class="str"&gt;"text"&lt;/span&gt; id=&lt;span class="str"&gt;"txtPlaca"&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;    &amp;lt;/TD&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    &amp;lt;/tr&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;    &amp;lt;/table&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;    &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;    &amp;lt;/form&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;    &amp;lt;script src=&lt;span class="str"&gt;"jquery.maskedinput.js"&lt;/span&gt; type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;    &amp;lt;script type=&lt;span class="str"&gt;"text/javascript"&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;       jQuery(&lt;span class="kwrd"&gt;function&lt;/span&gt;($) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;      &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;          $(&lt;span class="str"&gt;'#txtData'&lt;/span&gt;).mask(&lt;span class="str"&gt;'99/99/9999'&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;    $(&lt;span class="str"&gt;'#txtPlaca'&lt;/span&gt;).mask(&lt;span class="str"&gt;'aaa-9999'&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;     &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;   });&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;    &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;      &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-8924900789536631850?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/8924900789536631850/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=8924900789536631850&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/8924900789536631850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/8924900789536631850'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2009/01/mscaras-jquery.html' title='Máscaras JQuery'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-837184995632727977</id><published>2008-11-26T15:07:00.014-02:00</published><updated>2009-07-15T09:09:39.587-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>Gerenciamento de memória GC</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-family:arial;"&gt;Introdução (que deve ser lida depois).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/" target="_blank"&gt;http://www.hpl.hp.com/&lt;wbr&gt;personal/Hans_Boehm/gc/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.hpl.hp.com/personal/Hans_Boehm/gc/04tutorial.pdf" target="_blank"&gt;http://www.hpl.hp.com/&lt;wbr&gt;personal/Hans_Boehm/gc/&lt;wbr&gt;04tutorial.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Quem monitora a lista comp.lang.c++ deve ter visto o tópico sobre o&lt;br /&gt;garbage Collector&lt;br /&gt;&lt;br /&gt;[&lt;a href="http://groups.google.com/group/comp.lang.c++/browse_thread/thread/8100fa1e738da5a4?hl=en" target="_blank"&gt;http://groups.google.com/&lt;wbr&gt;group/comp.lang.c++/browse_&lt;wbr&gt;thread/thread/&lt;wbr&gt;8100fa1e738da5a4?hl=en&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;lendo o pdf descobri isto (slide 64)&lt;br /&gt;&lt;div class="msg"&gt;&lt;br /&gt;Bora lá.&lt;br /&gt;&lt;br /&gt;************************************************************&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Other experiences&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; • Generally works quite well for small (&lt;&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; clients or on 64-bit machines.&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; • Sometimes needs a bit pointer location information for frequently&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; occurring heap objects. Usually GC_MALLOC_ATOMIC is&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; sufficient for C code.&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; • Some successful uses with much larger heaps.&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; • Some problems with 500MB heaps on 32-bit machines.&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; • Large arrays (&gt; about 1MB) sometimes problematic.&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; • Fragmentation cost (for heaps &gt; a few MB) is typically less&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; than a factor of 2.&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; • Fragmentation essentially never an issue for small objects.&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; • Whole block coalescing is important.&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; • I haven't seen much of a problem with lo&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ng running apps.&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; (Vesta, Xerox printers).&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt; • Stationary objects allow one word object headers in gcj.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;***************************************************&lt;br /&gt;tem também os becnhmarks&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://lh5.ggpht.com/_-kJRL_SSm6c/SS2D20vMtpI/AAAAAAAAAL8/rP7DatPCiC4/s800/GC.PNG"&gt;&lt;img src="http://lh5.ggpht.com/_-kJRL_SSm6c/SS2D20vMtpI/AAAAAAAAAL8/rP7DatPCiC4/s800/GC.PNG" alt="Becnhmark" width="320px" height="200px" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;C expl. free é o malloc que nós costumamos usar BDW GC é o Garbage Collection.&lt;br /&gt;&lt;br /&gt;pra completar vai as dicas que recebi no grupo cppbrasil [google groups]&lt;br /&gt;&lt;br /&gt;***************************************************************&lt;br /&gt;&lt;blockquote&gt; Arrays grandes não costumam ser um problema pro Boehm GC desde que&lt;br /&gt;você não fique alocando/desalocando eles com freqüência. Eles causam o mesmo&lt;br /&gt;problema de fragmentação que com malloc.&lt;br /&gt;&lt;br /&gt;Quanto a performance. Bom, para ter uma performance razoavel é necessário usar alocação&lt;br /&gt;tipada e, principalmente, trabalhar sem interior pointers. Se for possível ter essas duas restrições&lt;br /&gt;no teu projeto, o BoehmGC com o coletor incremental ou paralelo é aceitavel.&lt;br /&gt;&lt;br /&gt;Porém GC em uma linguagem como C++, que não tem um sistema de tipos forte e a pilha não é tipada&lt;br /&gt;é bem complicado mesmo. Não tem milagre. Vai ser mais lento e vai usar mais memória.&lt;br /&gt;&lt;br /&gt;Porém a não ser que você esteja trabalhando com programas extremamente sensíveis a performance,&lt;br /&gt;o GC vai ser o menor dos teus problemas. Normalmente não irá ocupar mais que 10% do total de cpu&lt;br /&gt;usado.&lt;br /&gt;&lt;br /&gt;Quanto ao problema de fragmentação, ele existe e é real com heaps grandes em sistemas 32 bits. Não espere&lt;br /&gt;conseguir usar heaps de 1.5 - 2 Gb num sistema 32bits.&lt;/blockquote&gt;&lt;br /&gt;*****************************************************************&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:130%;"  &gt;Conclusão&lt;/span&gt;&lt;br /&gt;deixa de ser preguiçoso use o GC só como detector de memory leak ele faz muito bem isso&lt;br /&gt;e a Mozilla usa ele para isso, um makefile com a opção --with-debug resolveria isso. Creio que tb deva fazer um comparativo malloc vs new para arrays e objetos.&lt;br /&gt;&lt;br /&gt;espero que as informações tenhão sido uteis&lt;br /&gt;ps: 10% da cpu é um preço muito caro, quando eu mexer no Makefile faço alguns benchmarks devia aprender a usar a Boost pra isso també né.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-837184995632727977?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/837184995632727977/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=837184995632727977&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/837184995632727977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/837184995632727977'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2008/11/gerenciamento-de-memria-gc.html' title='Gerenciamento de memória GC'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_-kJRL_SSm6c/SS2D20vMtpI/AAAAAAAAAL8/rP7DatPCiC4/s72-c/GC.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-9003030829484096474</id><published>2008-11-26T14:59:00.006-02:00</published><updated>2009-07-15T09:12:27.361-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BLA BLA BLA'/><title type='text'>Motivol para uma revolta</title><content type='html'>desde o inicio da crise os governos mundiais já injetarão U$ 2,3 trilhões, nas usas ecônomias,  e gastarão mais U$ 7 trilhões para salvar bancos&lt;br /&gt;e a ONU pediu miseros U$ 7 bilhões [para 2009] para saval 33 milhões de pessoas da fome (mesmo pedido feito em esse ano e só coseguiu U$ 4,7 bilhões)&lt;br /&gt;pode se revoltar exploda todo ódio que há dentro de você por que o mundo que você vive é uma ....&lt;br /&gt;&lt;br /&gt;não sou comunista mesmo porque os bolcheviques erão a classe média/alta falida e amargurada, ou seja farinha do mesmo saco.&lt;br /&gt;&lt;br /&gt;minha voltade é fazer que nem Rotolando.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-family: courier new;"&gt;— Não te disse já, Sancho — respondeu D. &lt;/span&gt;&lt;b style="color: black; background-color: rgb(160, 255, 255); font-style: italic; font-family: courier new;"&gt;Quixote&lt;/b&gt;&lt;span style="font-style: italic; font-family: courier new;"&gt; — que pretendo imitar a Amadis desempenhando-me aqui do papel de desesperado, de sandeu e de furioso, para imitar juntamente ao valoroso D. Roldão, quando topou numa fonte os sinais de ter Angélica, a bela, cometido vileza com Medoro, e de &lt;/span&gt;&lt;b style="color: black; background-color: rgb(255, 153, 153); font-style: italic; font-family: courier new;"&gt;consternado&lt;/b&gt;&lt;span style="font-style: italic; font-family: courier new;"&gt; se tornou &lt;/span&gt;&lt;b style="color: black; background-color: rgb(255, 102, 255); font-style: italic; font-family: courier new;"&gt;louco&lt;/b&gt;&lt;span style="font-style: italic; font-family: courier new;"&gt;, arrancou as árvores, enturvou as águas das claras fontes, matou pastores, destruiu gados, abrasou choças, derribou casas, arrastou éguas e fez outras cem mil insolências dignas de eterno renome e escritura?&lt;br /&gt;ps: http://pt.wikisource.org/wiki/Dom_Quixote/I/XXV&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-9003030829484096474?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/9003030829484096474/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=9003030829484096474&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/9003030829484096474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/9003030829484096474'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2008/11/motivol-para-uma-revolta.html' title='Motivol para uma revolta'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-4321449431791905926</id><published>2008-11-24T08:37:00.002-02:00</published><updated>2009-07-15T09:17:28.539-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BLA BLA BLA'/><title type='text'>A idéia do XML</title><content type='html'>Eureka aqui temos as idéias, sem longos arrozamentos.&lt;br /&gt;&lt;br /&gt;Sobre o XML&lt;br /&gt;&lt;br /&gt;class XMLTag&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;  string tag&lt;br /&gt;  virtual bool doParse(string content);&lt;br /&gt;  virtual bool doProcess();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;básicamente se você for lá no World.cpp vai ver que as tags são processadas de uma maneira que eu considero ruim pq quando eu tiver 100 tags aquilo vai ser o inferno então criar uma classe que processe tags eu só faço uma herança e o trabalho pesa fica com éla isso vai me permitir uma grande flexibilidade.&lt;br /&gt;depois é só criar um container (KeyPar/map) na classe world ai eu adiciona as Tags lá ele le o xml e quando encontrar uma tag manda o responsável por éla ler&lt;br /&gt;já deixo todas as tags básicas implementadas, creio que coisas como Cube,Esphere,Material,Texture, eu implemente com herança multipla de Object/Tag [mais isso ainda vai ser estudado]&lt;br /&gt;é isso o que acha comente complete a idéia participe (to prescisando de ajuda)&lt;br /&gt;vou ficar meditando sobre isso.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-4321449431791905926?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/4321449431791905926/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=4321449431791905926&amp;isPopup=true' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4321449431791905926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4321449431791905926'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2008/11/idia-do-xml.html' title='A idéia do XML'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-5177049832926175187</id><published>2008-11-23T22:23:00.006-02:00</published><updated>2009-07-15T09:12:55.108-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>Newbie Engine Updates</title><content type='html'>Bom Re-apareci com novas, agora é oficial aquela bagunça de testes e blá blá acabarão, organizei o código da engine como qualquer outro projeto GNU&lt;br /&gt;(diretórios src,include), criei o autogen/automake, tem código novo (ParticleSystem, Material, Matrix)(Command ainda nao implementada p/ o console, [q eu nao commitei ainda])  algumas correções, mas que seja com isto temos a versão 0.0.1 (The Begin), creio que nos próximos meses só vou mexer com a parte gráfica os próximos passos são adicionar luzes, e texturas, presciso pensar sobre o terreno qual técnica usar p/ ambiente aberto (comenta uma dica), tb estou pensando eu criar HeightMaps, enfim se eu colocar todas a idéias aqui vai dar um livro melhor trabalhar né, só pra teriminar tenho que criar todos os objetos básicos na unha (Sphere,Cube,Torus,Piramide,Cone,Cilynder,Capsule,etc..) na unha quero q acesso total ao veriticel isso vai permitir modificações do Objeto em Run-Time.&lt;br /&gt;até mais passa la no svn e da um check-out.&lt;br /&gt;&lt;br /&gt;http://newbie-engine.svn.sourceforge.net/viewvc/newbie-engine/&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-5177049832926175187?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/5177049832926175187/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=5177049832926175187&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/5177049832926175187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/5177049832926175187'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2008/11/newbie-engine-updates.html' title='Newbie Engine Updates'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-2376382300321203571</id><published>2008-10-07T08:07:00.005-03:00</published><updated>2009-07-15T09:13:22.734-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>Newbie Game Engine Updates</title><content type='html'>Bom dia pessoal, boas novas depois que eu adiquiri um note, o desenvolvimento está mais ativo, agora está do sendo todo gerenciado pelo sourceforge.net, o código está no SVN compensa dar uma olhada em /expirements/GL_ARB lá estou prosseguindo com os estudos sobre o Architech Review Board do openGL, estou implementando o uso de vertex buffers, e próximo passo será GL_ARB_vertex_program e GL_ARB_fragment_program&lt;br /&gt;&lt;br /&gt;http://newbie-engine.svn.sourceforge.net/viewvc/newbie-engine/&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-2376382300321203571?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/2376382300321203571/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=2376382300321203571&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2376382300321203571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2376382300321203571'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2008/10/newbie-game-engine-updates.html' title='Newbie Game Engine Updates'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-5111333522426370158</id><published>2008-08-15T08:00:00.001-03:00</published><updated>2008-08-15T08:29:51.655-03:00</updated><title type='text'>Dia Software Livre</title><content type='html'>Bom to sem nada pra fazer aqui no trampo então resolvi atualizar meu blog, e que tal publicar todos os meus códigos fontes, pena que eu numca consigo terminar nada.&lt;br /&gt;&lt;br /&gt;Vou começar com uma lembrança boa os primeiros brincadeirinhas que tentei fazer, infelismente eu não tinha Backup e o HD pifou (numca cometa esse erro) só sobrarão as lembranças&lt;br /&gt;&lt;br /&gt;são do ano de 2003 faz um tempão mas por éssa época eu ja fazia algumas peripécias&lt;br /&gt;&lt;br /&gt;este iria ser um asterix, consegui fazer o Scroll.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://br.geocities.com/newbie_x11/Asterix.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://br.geocities.com/newbie_x11/Asterix.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;outro Gracioso era bomberman aqui consegui trabalhar com Sprites e mas as colisões com mapa funcionavão e eles Tinhão até uma "Burrice Artificial" :-)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://br.geocities.com/newbie_x11/Bomber.jpg"&gt;&lt;img style="cursor: pointer; width: 400px;" src="http://br.geocities.com/newbie_x11/Bomber.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Outro Muito queridinho éra o Jupter Ataca creio ter sido o primeiro em C com Allegro. ele já atirava e até conseguia destruir os malditos invasores, mas lembro que tinha umas falhas de memória.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://br.geocities.com/newbie_x11/JupterA.jpg"&gt;&lt;img style="cursor: pointer; width: 400px;" src="http://br.geocities.com/newbie_x11/JupterA.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;é o tipo de coisa que eu vou mostrar pro meu filho,&lt;br /&gt;&lt;br /&gt;Que tal alguns códigos agora&lt;br /&gt;&lt;br /&gt;um que eu tenho muito apreço foi o do teste que eu fiz pra entrar no grupo União Atlantica.&lt;br /&gt;uma bolinha quicando na tela em POO [&lt;a href="http://br.geocities.com/newbie_x11/Bolinha.zip"&gt;Bolinha&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;------&lt;br /&gt;&lt;br /&gt;Está é uma animação feita com Djgpp/Allegro&lt;br /&gt;[&lt;a href="http://br.geocities.com/newbie_x11/anim.zip"&gt;anim&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;e tem por ultimo o preojeto de um editor de  mapas, o dia que eu quiser fazer um jogo 2D (ou tentar) eu termino ele&lt;br /&gt;[&lt;a href="http://br.geocities.com/newbie_x11/mapa.tar.gz"&gt;mapa&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;por enquanto é isso no que eu to fuçando agora vc's podem acompnhar aqui no blog, obrigado.&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-5111333522426370158?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/5111333522426370158/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=5111333522426370158&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/5111333522426370158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/5111333522426370158'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2008/08/dia-software-livre.html' title='Dia Software Livre'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-1709784458695718776</id><published>2008-04-02T17:30:00.001-03:00</published><updated>2009-07-15T09:13:53.562-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>Cel Shading em Delphi</title><content type='html'>&lt;a href="http://bp1.blogger.com/_-kJRL_SSm6c/R_Pt-3zdfpI/AAAAAAAAACI/g2p1eZDo42E/s1600-h/CelShading.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5184749260421037714" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_-kJRL_SSm6c/R_Pt-3zdfpI/AAAAAAAAACI/g2p1eZDo42E/s320/CelShading.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Implementei um algoritimo basico de Cel Shading Basico em Delphi, baseado na lição 37 da NeHe (OpenGL), agora que, sei como funciona (que é o principal) vou passar pra engine em C++ mas como as coisas aqui estão andando em ritimo de tartagura não será tão breve, aguardem Até mais pessoal.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;quer uma copia GPL&lt;/div&gt;&lt;div&gt;http://br.geocities.com/newbie_x11/Testing.zip&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-1709784458695718776?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/1709784458695718776/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=1709784458695718776&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/1709784458695718776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/1709784458695718776'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2008/04/cel-shading-em-delphi.html' title='Cel Shading em Delphi'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_-kJRL_SSm6c/R_Pt-3zdfpI/AAAAAAAAACI/g2p1eZDo42E/s72-c/CelShading.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-2110901448459785869</id><published>2008-01-23T22:20:00.000-02:00</published><updated>2008-01-23T22:22:19.837-02:00</updated><title type='text'>Off de novo</title><content type='html'>Pessoal a coisa ande de vagar pois é to de mudança, fiz poucas coisas esses tempos na engine consegui fazer um Cel-Shading (Delphi) que tenho que portar, um sistema de particula algo sobre matrizes, mais daqui pra frente por um bom tempo não vai dar pra mexer :-(&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-2110901448459785869?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/2110901448459785869/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=2110901448459785869&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2110901448459785869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/2110901448459785869'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2008/01/off-de-novo.html' title='Off de novo'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-4789208443444912987</id><published>2007-10-23T17:03:00.003-02:00</published><updated>2009-07-15T09:14:53.936-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='newbie game engine'/><title type='text'>newbie-engine news</title><content type='html'>&lt;a href="http://bp2.blogger.com/_-kJRL_SSm6c/Rx5Gas2s6kI/AAAAAAAAABQ/KbvIueJ485U/s1600-h/Shot1.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5124610850525342274" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_-kJRL_SSm6c/Rx5Gas2s6kI/AAAAAAAAABQ/KbvIueJ485U/s320/Shot1.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;-O Parse de XML (Agradeço ao time BZK) já esta funcionando&lt;/div&gt;&lt;br /&gt;&lt;div&gt;-Carregando Mesh (Wavefronr .obj) no formato trigonometrico, falta aplicar, materiais e texturas&lt;/div&gt;&lt;br /&gt;-Projeto adicionado ao sourceforge.&lt;br /&gt;&lt;br /&gt;-Agradecimento ao Jaca, (modelador) vlw.!!!&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/newbie-engine/"&gt;http://sourceforge.net/projects/newbie-engine/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://br.geocities.com/newbie_x11/"&gt;http://br.geocities.com/newbie_x11/&lt;/a&gt;&lt;a href="http://br.geocities.com/newbie_x11/newbie_engine.zip"&gt;newbie_engine.zip&lt;/a&gt; (Não consegui fazer upload no SF)&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-4789208443444912987?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/4789208443444912987/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=4789208443444912987&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4789208443444912987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4789208443444912987'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2007/10/newbie-engine-news.html' title='newbie-engine news'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_-kJRL_SSm6c/Rx5Gas2s6kI/AAAAAAAAABQ/KbvIueJ485U/s72-c/Shot1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-3167131017844763027</id><published>2007-10-05T17:08:00.002-03:00</published><updated>2009-07-15T09:15:13.552-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><title type='text'>Prepare Seu processador a fisica chegou</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5117948334047029810" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_-kJRL_SSm6c/Rwaa5M2s6jI/AAAAAAAAABI/3Nn72lr22zc/s320/shot1.PNG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://bp3.blogger.com/_-kJRL_SSm6c/Rwaaa82s6iI/AAAAAAAAABA/QF-B94EbXZY/s1600-h/shot2.PNG"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Primeira pergunta o q acontece quando empilhamos 500 caixas, abaixo a resposta.&lt;/div&gt;&lt;div&gt;Esse é um teste feito no desenvolvimento do meu TCC, vai ser um joguinho chamado Destruir onde o unico objetivo é destruir :-) no projeto esto usando OpenGL para graficos ODE, para fisica, ainda pretendo adicionar nesse final de Semana um parse pra XML (bzk?). ai vai o código nem presciso diser que é GPL.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="http://geocities.yahoo.com.br/newbie_x11/tcc.zip"&gt;http://geocities.yahoo.com.br/newbie_x11/tcc.zip&lt;/a&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;abraços&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-3167131017844763027?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/3167131017844763027/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=3167131017844763027&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3167131017844763027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3167131017844763027'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2007/10/prepare-seu-processador-fisica-chegou.html' title='Prepare Seu processador a fisica chegou'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_-kJRL_SSm6c/Rwaa5M2s6jI/AAAAAAAAABI/3Nn72lr22zc/s72-c/shot1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-4977880016038340490</id><published>2007-08-22T18:54:00.002-03:00</published><updated>2009-07-15T09:14:24.400-03:00</updated><title type='text'>A coisa anda Off</title><content type='html'>Desculpe gente to produzindo algumas coisas pra postar no blog mais numca tenho tempo de terminar, mas esquenten não logo logo ta vindo por ai um renderizador 3D feito em C+SDL (só isso) t+ pessoal, mais em quanto isso recomendo que deem um pulo no blog d eum Grande Amigo NeoStrider corporatedrones.wordpress.com lá tem tudo sobre o projeto BZK2 um engine feita com SDL+C++&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-4977880016038340490?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/4977880016038340490/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=4977880016038340490&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4977880016038340490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4977880016038340490'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2007/08/coisa-anda-off.html' title='A coisa anda Off'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-8280465988593918235</id><published>2007-04-11T21:16:00.000-03:00</published><updated>2007-04-11T21:20:38.413-03:00</updated><title type='text'></title><content type='html'>&lt;a href="http://bp0.blogger.com/_-kJRL_SSm6c/Rh17JlUj11I/AAAAAAAAAAc/BcZwKnV9nHQ/s1600-h/kirstendunstap.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5052329761546950482" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_-kJRL_SSm6c/Rh17JlUj11I/AAAAAAAAAAc/BcZwKnV9nHQ/s400/kirstendunstap.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.growroom.net/blog/2007/kirsten-dunst-apoia-cannabis/" rel="bookmark"&gt;Kirsten Dunst: ‘O mundo seria melhor se todos tivessem fumado maconha&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Posted in &lt;a title="View all posts in Notícias" href="http://www.growroom.net/blog/category/noticias/" rel="category tag"&gt;Notícias&lt;/a&gt;, &lt;a title="View all posts in Cinema" href="http://www.growroom.net/blog/category/cinema/" rel="category tag"&gt;Cinema&lt;/a&gt;, &lt;a title="View all posts in Cultura" href="http://www.growroom.net/blog/category/cultura/" rel="category tag"&gt;Cultura&lt;/a&gt; by Growroom on the April 10th, 2007&lt;br /&gt;RIO - Estrela do filme “Maria Antonieta” - em cartaz nos cinemas - a atriz Kirsten Dunst é fã de maconha e acredita que o mundo seria um lugar melhor se “todos tivessem fumado”, disse a beldade de 24 anos para o site Hollywood.com.&lt;br /&gt;De acordo com o endereço eletrônico, a atriz de “Homem-Aranha 3″ admitiu fumar maconha e ter experimentado outras drogas.&lt;br /&gt;- Bebo com moderação e já provei drogas. Eu gosto de maconha. Tenho uma visão diferente da maconha do que o resto dos Estados Unidos.&lt;br /&gt;- O melhor amigo do meu pai era Carl Sagan, o astrônomo. Ele era o maior fumante de maconha do mundo e era um gênio - enumerou Kirsten.&lt;br /&gt;- Nunca fui uma grande fumante de maconha, mas eu acho ridícula a visão dos Estados Unidos sobre a erva. Se todos tivessem fumado maconha, o mundo seria um lugar melhor - desabafa a atriz.&lt;br /&gt;Kirsten, apesar de gostar de maconha, faz ressalvas:&lt;br /&gt;- Não estou dizendo para ninguém ficar chapado o dia inteiro. Se você não usar com moderação, a maconha pode diminuir sua criatividade e fazer você se isolar.&lt;br /&gt;Fonte: O Globo Online.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Fonte &lt;a href="http://www.growroom.net"&gt;www.growroom.net&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-8280465988593918235?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/8280465988593918235/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=8280465988593918235&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/8280465988593918235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/8280465988593918235'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2007/04/kirsten-dunst-o-mundo-seria-melhor-se.html' title=''/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_-kJRL_SSm6c/Rh17JlUj11I/AAAAAAAAAAc/BcZwKnV9nHQ/s72-c/kirstendunstap.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-4469341019968588705</id><published>2007-03-21T20:42:00.000-03:00</published><updated>2007-03-21T20:44:30.920-03:00</updated><title type='text'>Computação Traiçoeira ai ai ai</title><content type='html'>*** Recebi esse e-mail de um amigo ***&lt;br /&gt;************************************&lt;br /&gt;&lt;br /&gt;Vai aí um informe pra vcs ficarem espertos sobre o&lt;br /&gt;Windows Vista.&lt;br /&gt;Computação Traiçoeira integra hardware e software&lt;br /&gt;e transfere o&lt;br /&gt;controle do computador do usuário para o fabricante.&lt;br /&gt;Novo Windows deve&lt;br /&gt;incluir a tecnologia.&lt;br /&gt;&lt;br /&gt;Logo após o 11 de setembro de 2001 o governo de George&lt;br /&gt;W. Bush impôs&lt;br /&gt;uma escolha difícil aos cidadãos estadunidenses. Para&lt;br /&gt;que tivessem sua&lt;br /&gt;segurança garantida, deveriam abdicar de algumas de&lt;br /&gt;suas liberdades e&lt;br /&gt;direitos. O resultado está nas páginas dos jornais de&lt;br /&gt;todo mundo: o&lt;br /&gt;risco e a sensação de insegurança só cresceram, e a&lt;br /&gt;vigilância, os&lt;br /&gt;grampos telefônicos e digitais, as prisões ilegais, a&lt;br /&gt;tortura e as&lt;br /&gt;violações aos direitos humanos agora fazem parte do&lt;br /&gt;cotidiano do país.&lt;br /&gt;&lt;br /&gt;A premissa de se abdicar da liberdade em nome de uma&lt;br /&gt;falsa segurança,&lt;br /&gt;que na verdade é sinônimo de controle, tem seu&lt;br /&gt;equivalente no mundo da&lt;br /&gt;computação. Chama-se Trusted Computing (Computação&lt;br /&gt;Confiável) ou&lt;br /&gt;Treacherous Computing (Computação Traiçoeira), como&lt;br /&gt;preferem Richard&lt;br /&gt;Stallman e a Free Software Foundation. De fato, algo&lt;br /&gt;que não se pode&lt;br /&gt;controlar certamente está mais sujeito a lhe trair,&lt;br /&gt;pois sempre pode&lt;br /&gt;agir de maneira inesperada. E a Computação Traiçoeira&lt;br /&gt;é isso, o&lt;br /&gt;controle do computador aliena-se do usuário, ficando a&lt;br /&gt;cargo da&lt;br /&gt;empresa que o produziu.&lt;br /&gt;&lt;br /&gt;Na prática, a Computação Traiçoeira promove uma&lt;br /&gt;integração forte entre&lt;br /&gt;software e hardware, usando principalmente de chaves&lt;br /&gt;criptográficas.&lt;br /&gt;Um chip soldado no computador oferece chaves de&lt;br /&gt;identificação que são&lt;br /&gt;verificadas e validadas por softwares. Estes, por sua&lt;br /&gt;vez, autenticam-&lt;br /&gt;se entre si, fazendo com que o sistema operacional&lt;br /&gt;valide aplicativos&lt;br /&gt;e estes validem os arquivos que produzem. Alterações&lt;br /&gt;no software ou no&lt;br /&gt;hardware podem ser detectadas e informadas a outros,&lt;br /&gt;remotamente.&lt;br /&gt;Assim, se você está ouvindo um mp3 pirata de uma&lt;br /&gt;música do Metallica,&lt;br /&gt;por exemplo, (para falar de uma banda muito ciosa dos&lt;br /&gt;pagamentos a&lt;br /&gt;seus direitos autorais) a Computação Traiçoeira&lt;br /&gt;permite que Lars&lt;br /&gt;Ulrich delete seu arquivo com apertar de botão.&lt;br /&gt;&lt;br /&gt;Uma bela explicação sobre o que, tecnicamente, é a&lt;br /&gt;Computação&lt;br /&gt;Traiçoeira e quais as suas consequências é o FAQ&lt;br /&gt;"'Trusted Computing'&lt;br /&gt;Frequently Asked Questions", de Ross Anderson,&lt;br /&gt;publicado em&lt;br /&gt;http://www.cl.cam.ac.uk/~rja14/tcpa-faq.html. É um&lt;br /&gt;documento grande e&lt;br /&gt;em&lt;br /&gt;inglês, então vale transcrever um trecho:&lt;br /&gt;&lt;br /&gt;"TC (sigla para Computação Confiável/Traiçoeira)&lt;br /&gt;oferece uma&lt;br /&gt;plataforma computacional em que você não pode alterar&lt;br /&gt;o software&lt;br /&gt;aplicativo, e onde essas aplicações podem comunicar-se&lt;br /&gt;com segurança&lt;br /&gt;com seus autores e entre si. A motivação original foi&lt;br /&gt;o DRM&lt;br /&gt;(Gerenciamento de Direitos Digitais): Disney poderá&lt;br /&gt;lhe vender DVDs&lt;br /&gt;que serão decodificados e rodarão em uma plataforma&lt;br /&gt;TC, mas os quais&lt;br /&gt;você não poderá copiar. A indústria da música poderá&lt;br /&gt;lhe vender&lt;br /&gt;músicas compradas na rede as quais você não poderá&lt;br /&gt;compartilhar. Eles&lt;br /&gt;poderão lhe vender CDs que você não poderá tocar três&lt;br /&gt;vezes, ou só&lt;br /&gt;poderá ouvi-los em seu aniversário. Todos os tipos de&lt;br /&gt;possibilidades&lt;br /&gt;de marketing surgirão".&lt;br /&gt;&lt;br /&gt;Uma dessas possibilidades é o aluguel ou venda&lt;br /&gt;pré-paga de software e&lt;br /&gt;computadores. Se o consumidor mantém seus pagamentos&lt;br /&gt;em dia o produto&lt;br /&gt;funciona, se não o serviço é cortado automaticamente.&lt;br /&gt;&lt;br /&gt;O Brasil já se tornou campo de testes para esse tipo&lt;br /&gt;de venda, vide&lt;br /&gt;uma experiência da Microsoft em conjunto com o&lt;br /&gt;Magazine Luiza (http://&lt;br /&gt;www.dicas-l.com.br/zonadecombate/zonadecombate_20060128.php).&lt;br /&gt;Quando o&lt;br /&gt;programa foi anunciado, em 1995, as empresas se&lt;br /&gt;recusaram a dizer se&lt;br /&gt;utilizavam recursos de Computação Traiçoeira. Hoje,&lt;br /&gt;Microsoft e&lt;br /&gt;Magazine Luiza estão sendo chamados a prestar&lt;br /&gt;esclarecimentos ao&lt;br /&gt;Procon&lt;br /&gt;(http://home.londrina.pr.gov.br/news_det.php?id_news=13726)&lt;br /&gt;pois o contrato que o cliente-cobaia assina para&lt;br /&gt;adquirir o produto&lt;br /&gt;diz coisas como: "Independentemente de qualquer outra&lt;br /&gt;política de&lt;br /&gt;privacidade que acompanhe o PC, estou plenamente&lt;br /&gt;ciente de que o&lt;br /&gt;Magazine Luiza e a Microsoft farão o rastreamento e&lt;br /&gt;manterão registros&lt;br /&gt;de meus hábitos de uso do computador e, pelo presente&lt;br /&gt;instrumento, dou&lt;br /&gt;plena autorização ao Magazine Luiza e à Microsoft para&lt;br /&gt;coletar dados&lt;br /&gt;sobre mim e meus hábitos de uso do computador e a&lt;br /&gt;compartilhá-los com&lt;br /&gt;terceiros com relação ao Teste de Mercado".&lt;br /&gt;&lt;br /&gt;A Computação Traiçoeira é a infra-estrutura&lt;br /&gt;tecnológica perfeita para&lt;br /&gt;a expansão dos DRMs. Pela alta integração entre os&lt;br /&gt;softwares e o&lt;br /&gt;hardware, fica fácil impor uma autenticação remota&lt;br /&gt;obrigatória e, se&lt;br /&gt;seu aplicativo ou arquivo não estiver autorizado, ele&lt;br /&gt;simplesmente não&lt;br /&gt;funciona.&lt;br /&gt;&lt;br /&gt;Ela deve tornar também a engenharia reversa uma&lt;br /&gt;prática inútil. Quando&lt;br /&gt;uma empresa esconde as especificações dos arquivos que&lt;br /&gt;seu aplicativo&lt;br /&gt;produz (um arquivo de texto, por exemplo), as empresas&lt;br /&gt;concorrentes&lt;br /&gt;tentam entender "na marra" a especificação do arquivo,&lt;br /&gt;para que ele&lt;br /&gt;possa ser lido por qualquer aplicativo. Se esse&lt;br /&gt;arquivo&lt;br /&gt;necessariamente precisar ser autenticado para ser&lt;br /&gt;lido, não vai bastar&lt;br /&gt;entender a especificação, será preciso ter a chave que&lt;br /&gt;o fecha.&lt;br /&gt;&lt;br /&gt;Muitos podem argumentar que é possível ficar à margem&lt;br /&gt;disso tudo,&lt;br /&gt;basta não aderir à tecnologia. O problema é que na&lt;br /&gt;vida cotidiana nem&lt;br /&gt;sempre todas as opções são viáveis. Quanto mais um&lt;br /&gt;padrão se espalha,&lt;br /&gt;mais difícil é combatê-lo. Quantas vezes não somos&lt;br /&gt;obrigados a enviar&lt;br /&gt;arquivos em .doc a repartições públicas ou empresas?&lt;br /&gt;Será que, no&lt;br /&gt;futuro, não seremos obrigados a enviar documentos&lt;br /&gt;oficialmente&lt;br /&gt;certificados com Computação Traiçoeira?&lt;br /&gt;&lt;br /&gt;Muito criticada pela mídia, por consumidores e por&lt;br /&gt;entidades que lutam&lt;br /&gt;por direitos civis, a Computação Traiçoeira&lt;br /&gt;materializada em produtos&lt;br /&gt;já mudou muitas vezes de nome. A Microsoft&lt;br /&gt;inicialmente procurava&lt;br /&gt;implantá-la em seu projeto Palladium, que depois virou&lt;br /&gt;o Next-&lt;br /&gt;Generation Secure Computing Base. Hoje a equipe do&lt;br /&gt;projeto está&lt;br /&gt;reunida sob o nome System Integrity Team&lt;br /&gt;(http://blogs.msdn.com/&lt;br /&gt;si_team/default.aspx). O novo Windows, o Vista, deverá&lt;br /&gt;incluir, nas&lt;br /&gt;versões mais sofisticadas, um sistema de encriptação&lt;br /&gt;de disco chamado&lt;br /&gt;BitLocker. O computador terá um chip (TPM, Trusted&lt;br /&gt;Plataform Module),&lt;br /&gt;que validará a integridade do sistema e, em tese,&lt;br /&gt;protegerá fortemente&lt;br /&gt;os dados e o sistema do usuário. Esses chips já&lt;br /&gt;equipam milhares de&lt;br /&gt;computadores hoje, principalmente notebooks Toshiba e&lt;br /&gt;IBM.&lt;br /&gt;&lt;br /&gt;A idéia da Computação Traiçoeira partiu de um conjunto&lt;br /&gt;pequeno de&lt;br /&gt;gigantes da tecnologia da informação: HP, Compaq,&lt;br /&gt;Microsoft, IBM e&lt;br /&gt;Intel. Mas hoje integram o Trusted Computing Group&lt;br /&gt;mais de 200&lt;br /&gt;empresas, entre elas a AMD, Samsung, Motorola e&lt;br /&gt;outras.&lt;br /&gt;&lt;br /&gt;O assunto é tecnicamente complexo e, ao sabor da&lt;br /&gt;pressão do público,&lt;br /&gt;as empresas tem avançado e recuado em suas&lt;br /&gt;estratégias. Pela ânsia com&lt;br /&gt;que perseguem a iniciativa parece claro que será muito&lt;br /&gt;bom para elas.&lt;br /&gt;E para os usuários, será seguro deixar a chave do&lt;br /&gt;cofre na mão desses&lt;br /&gt;sujeitos?&lt;br /&gt;&lt;br /&gt;Veja também:&lt;br /&gt;&lt;br /&gt;Vídeo explicativo:http://www.lafkon.net/tc/&lt;br /&gt;&lt;br /&gt;O FAQ da Computação&lt;br /&gt;Traiçoeira:http://www.cl.cam.ac.uk/~rja14/tcpa-&lt;br /&gt;faq.html&lt;br /&gt;&lt;br /&gt;Next Generation Secure Computing&lt;br /&gt;Base:http://en.wikipedia.org/wiki/&lt;br /&gt;Next-Generation_Secure_Computing_Base&lt;br /&gt;&lt;br /&gt;BitLocker:http://en.wikipedia.org/wiki/Bitlocker&lt;br /&gt;&lt;br /&gt;************************************&lt;br /&gt;*** Mais detalhes a respeito ??? ***&lt;br /&gt;&lt;br /&gt;[]'s&lt;br /&gt;Inseto_Verde&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fonte Mercenarios Club um abraço&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-4469341019968588705?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/4469341019968588705/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=4469341019968588705&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4469341019968588705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/4469341019968588705'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2007/03/computao-traioeira-ai-ai-ai.html' title='Computação Traiçoeira ai ai ai'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-3788353715304513863</id><published>2007-02-07T19:44:00.000-02:00</published><updated>2007-02-07T19:48:53.868-02:00</updated><title type='text'>Rotação um dia fica bom :-)</title><content type='html'>&lt;a href="http://bp3.blogger.com/_-kJRL_SSm6c/RcpIxzBIszI/AAAAAAAAAAM/DgGUjdc2v3M/s1600-h/rotacao.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5028911954258342706" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_-kJRL_SSm6c/RcpIxzBIszI/AAAAAAAAAAM/DgGUjdc2v3M/s400/rotacao.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;olha só o que era pra ser uma rotação em torno do eixo Z, mas hj vou fazer uma enorme bateria de teste pra ver o q dá, em quanto isso tai o código c vc puder me ajudar&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;#include &lt;sdl/sdl.h&gt;&lt;br /&gt;#include "math.h"&lt;br /&gt;#include "SDL.h"&lt;br /&gt;#include "SDL_gfxPrimitives.h"&lt;br /&gt;#define deg2rad M_PI/180.0&lt;br /&gt;#define HALFX 320&lt;br /&gt;#define HALFY 240&lt;br /&gt;#define RESX 640&lt;br /&gt;#define RESY 480&lt;br /&gt;class Vertex&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;float x;&lt;br /&gt;float y;&lt;br /&gt;float z;&lt;br /&gt;const Vertex&amp; operator= (Vertex&amp;amp; V)&lt;br /&gt;{&lt;br /&gt;x = V.x;&lt;br /&gt;y = V.y;&lt;br /&gt;z = V.z;&lt;br /&gt;return *this;&lt;br /&gt;};&lt;br /&gt;};&lt;br /&gt;Vertex V1,V2;&lt;br /&gt;/* translacao */&lt;br /&gt;void VecTranslate(Vertex *V,float tx,float ty,float tz)&lt;br /&gt;{&lt;br /&gt;V-&gt;x += tx;&lt;br /&gt;V-&gt;y += ty;&lt;br /&gt;V-&gt;z += tz;&lt;br /&gt;}&lt;br /&gt;/* escala */&lt;br /&gt;void VecScale(Vertex *V,float sx,float sy,float sz)&lt;br /&gt;{&lt;br /&gt;V-&gt;x *= sx;&lt;br /&gt;V-&gt;y *= sy;&lt;br /&gt;V-&gt;z *= sz;&lt;br /&gt;}&lt;br /&gt;/* rotacao em eixo arbitrario */&lt;br /&gt;void VecRotate(Vertex *V,float x,float y,float z,float theta)&lt;br /&gt;{&lt;br /&gt;float xx,yy,zz,xy,xz,yz,xSintheta,ySintheta,zSintheta,Costheta,Sintheta,UmMenosCostheta;&lt;br /&gt;Costheta = cosf(theta);&lt;br /&gt;Sintheta = sinf(theta);&lt;br /&gt;UmMenosCostheta = 1-Costheta;&lt;br /&gt;xx = x*x*UmMenosCostheta;&lt;br /&gt;yy = y*y*UmMenosCostheta;&lt;br /&gt;zz = z*z*UmMenosCostheta;&lt;br /&gt;xy = z*y*UmMenosCostheta;&lt;br /&gt;xz = x*z*UmMenosCostheta;&lt;br /&gt;yz = y*z*UmMenosCostheta;&lt;br /&gt;xSintheta = x*Sintheta;&lt;br /&gt;ySintheta = y*Sintheta;&lt;br /&gt;zSintheta = z*Sintheta;&lt;br /&gt;V-&gt;x = (xx+Costheta) * V-&gt;x + (xy - zSintheta) * V-&gt;y + (xz + ySintheta) * V-&gt;z;&lt;br /&gt;V-&gt;y = (xy+zSintheta) * V-&gt;x + (yy + Costheta) * V-&gt;y + (yz - xSintheta) * V-&gt;z;&lt;br /&gt;V-&gt;z = (xz-ySintheta) * V-&gt;x + (yz + xSintheta) * V-&gt;y + (zz + Costheta) * V-&gt;z;&lt;br /&gt;}&lt;br /&gt;/* Projecao */&lt;br /&gt;void VecProject(Vertex *V,float distance)&lt;br /&gt;{&lt;br /&gt;float x,y;&lt;br /&gt;x = V-&gt;x / V-&gt;z;&lt;br /&gt;y = V-&gt;y / V-&gt;z;&lt;br /&gt;V-&gt;x = HALFX +(RESX*x);&lt;br /&gt;V-&gt;y = HALFY +(RESY*y);&lt;br /&gt;}&lt;br /&gt;int main()&lt;br /&gt;{&lt;br /&gt;Vertex V1,V2,Va,Vb;&lt;br /&gt;SDL_Surface *screen;&lt;br /&gt;SDL_Init(SDL_INIT_VIDEO);&lt;br /&gt;screen = SDL_SetVideoMode(RESX,RESY,8,SDL_SWSURFACE);&lt;br /&gt;if (screen == NULL)&lt;br /&gt;{&lt;br /&gt;printf("Nao foi possivel iniciar o video\n");&lt;br /&gt;exit(0);&lt;br /&gt;}&lt;br /&gt;V1.x = 5;&lt;br /&gt;V1.y = 5;&lt;br /&gt;V1.z = 10;&lt;br /&gt;V2.x = 15;&lt;br /&gt;V2.y = 5;&lt;br /&gt;V2.z = 10;&lt;br /&gt;VecTranslate(&amp;V1,0,0,50);&lt;br /&gt;VecTranslate(&amp;V2,0,0,50);&lt;br /&gt;VecScale(&amp;V1,1.5,1.5,1.5);&lt;br /&gt;VecScale(&amp;V2,1.5,1.5,1.5);&lt;br /&gt;float rx =1*deg2rad;&lt;br /&gt;while (1)&lt;br /&gt;{&lt;br /&gt;if (rx &gt;= 360*deg2rad)&lt;br /&gt;rx = 1*deg2rad;&lt;br /&gt;Va = V1;&lt;br /&gt;Vb = V2;&lt;br /&gt;VecRotate(&amp;Va,0,0,1,rx);&lt;br /&gt;VecRotate(&amp;Vb,0,0,1,rx);&lt;br /&gt;VecProject(&amp;Va,100);&lt;br /&gt;VecProject(&amp;Vb,100);&lt;br /&gt;lineColor(screen,Va.x,Va.y,Vb.x,Vb.y,0xFFFFFFFF);&lt;br /&gt;SDL_UpdateRect(screen,0,0,RESX,RESY);&lt;br /&gt;rx+=(1*deg2rad);&lt;br /&gt;}&lt;br /&gt;return 0;&lt;br /&gt;}&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-3788353715304513863?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/3788353715304513863/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=3788353715304513863&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3788353715304513863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/3788353715304513863'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2007/02/rotao-um-dia-fica-bom.html' title='Rotação um dia fica bom :-)'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_-kJRL_SSm6c/RcpIxzBIszI/AAAAAAAAAAM/DgGUjdc2v3M/s72-c/rotacao.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-116714669964176892</id><published>2006-12-26T19:50:00.000-02:00</published><updated>2006-12-28T13:59:28.686-02:00</updated><title type='text'>Uns videos legais</title><content type='html'>pra quem quiser rir um pouco vai ai uns videos no youtube&lt;br /&gt;&lt;br /&gt;primeiro o &lt;a href="http://www.youtube.com/watch?v=2PWNRzfx8zU"&gt;tapa na pantera&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=sE33HollL9I"&gt;Padre quemedo vs o filho do capeta&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=jYRL9-t9uTQ&amp;NR"&gt;Joselito na praia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=Of7LcQJlPl8"&gt;silvio santos e o bambu&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=fRDMY4qCG7E"&gt;vai wilson vai&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=mY-wtASSakU"&gt;Capoeira de gaucho&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=eEIhBZ9Z9Cw"&gt;Comercial com Costinha&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Agora uns de musica gringo&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Vamos começar com public enemy &lt;a href="http://www.youtube.com/watch?v=GbdwoGtcXgo"&gt;Son of Bush&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=-9Xg57u-4HA"&gt;By The Time I Get To Arizona&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wu Tang Clan &lt;a href="http://www.youtube.com/watch?v=GDfToFcJ2J4"&gt;C.R.E.A.M&lt;/a&gt;&lt;br /&gt;Wu Tang Clan &lt;a href="http://www.youtube.com/watch?v=2FbAKBmwweY"&gt;Reunited&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Clipes Nacionais &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Por enquanto pra chocar o &lt;a href="http://www.youtube.com/watch?v=MUcO4-eK7nY"&gt;Espetáculo do circo de Horrores&lt;/a&gt; Facção Central&lt;br /&gt;&lt;br /&gt;Essa semana é so isso meio sem tempo fim de ano fica na frente do pc nada vou é tomar cerveja um abraço pessoal e até mais&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-116714669964176892?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/116714669964176892/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=116714669964176892&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/116714669964176892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/116714669964176892'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2006/12/uns-videos-legais.html' title='Uns videos legais'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38354121.post-116680704826745622</id><published>2006-12-22T14:57:00.000-02:00</published><updated>2006-12-22T15:04:08.276-02:00</updated><title type='text'>Bem Vindos</title><content type='html'>estavão dizendo por ai que eu não tinha nada publico né (gabi), refleti um pouco e me achei meio xiita :-) mas bom sou úsuario de SL odeio a M$, perdia muito tempo no orkut, será que apagar a conta no orkut e mudar parao jabber e destruir o msn é ma idéia não confio na M$ quem sabe eles não monitoão minhas conversas no msn (paranoico) mais ta ai meu espaço public aparece de vez em quando pessoal prometo que vai ter coisa boa utíl com conteudo pra voces um abraço e até mais (gabi agora vc pode fazer eu pagar um mico :-) )&lt;div class="blogger-post-footer"&gt;newbie game engine.&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38354121-116680704826745622?l=newbie-x11.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://newbie-x11.blogspot.com/feeds/116680704826745622/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38354121&amp;postID=116680704826745622&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/116680704826745622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38354121/posts/default/116680704826745622'/><link rel='alternate' type='text/html' href='http://newbie-x11.blogspot.com/2006/12/bem-vindos.html' title='Bem Vindos'/><author><name>Gabriel</name><uri>http://www.blogger.com/profile/02463004073058771577</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://2.bp.blogspot.com/_-kJRL_SSm6c/SOtHGgE224I/AAAAAAAAAFs/q5ndUv2r2jI/S220/gabriel.jpg'/></author><thr:total>0</thr:total></entry></feed>
