﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Gotta Write A Code-随笔分类-Windows Programming</title><link>http://www.cppblog.com/bennycen/category/17665.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 05 May 2012 05:32:27 GMT</lastBuildDate><pubDate>Sat, 05 May 2012 05:32:27 GMT</pubDate><ttl>60</ttl><item><title>DX笔记</title><link>http://www.cppblog.com/bennycen/archive/2012/05/03/173603.html</link><dc:creator>bennycen</dc:creator><author>bennycen</author><pubDate>Thu, 03 May 2012 13:38:00 GMT</pubDate><guid>http://www.cppblog.com/bennycen/archive/2012/05/03/173603.html</guid><wfw:comment>http://www.cppblog.com/bennycen/comments/173603.html</wfw:comment><comments>http://www.cppblog.com/bennycen/archive/2012/05/03/173603.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/bennycen/comments/commentRss/173603.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bennycen/services/trackbacks/173603.html</trackback:ping><description><![CDATA[<div><div>1. 凹凸纹理映射</div><div>凹凸纹理存放在一个纹理图片中，其(R,G,B)分别对应(u,v,w)的normalize向量，由于(R,G,B)的归一化后的范围是(0-1)，故要通过(x - 0.5)*2转换成(-1,1)的范围。</div><div>另外，由于凹凸纹理记录的是针对一个垂直于视线的平面的向量，如果将其贴到其他物体上，如环体，球体，就必须计算纹理坐标空间，就是将不垂直于视线的变换为垂直于视线的。可以构造渲染object的(法线，切线)，并且得垂直于法线切线的向量，构成坐标系，然后计算光线方向lightDir和视线方向viewDir时，要将其变换到纹理空间坐标系去。</div><div>最后在pixel shader中根据lightDir、viewDir和texcoord，像一般光照计算那样计算，只不过其&#8220;法向量&#8221;由凹凸纹理提供。</div><div><img src="http://www.cppblog.com/images/cppblog_com/bennycen/5-1.PNG" width="648" height="514" alt="" /></div><div>2. 立方体环境映射</div><div>先构造立方体纹理，CubeMap，像个纸盒打开6个面那样。然后逐顶点计算反射向量，计算如下：R = I - 2*N*dot(I,N)，然后在pixel shader中texCUBE。<br /><img src="http://www.cppblog.com/images/cppblog_com/bennycen/5-2.JPG" width="648" height="514" alt="" /></div><div></div><div>3.折射反射</div><div>在2中再添加一个折射向量，然后pixel shader中两次texCUBE后混合一下。<br /><img src="http://www.cppblog.com/images/cppblog_com/bennycen/5-3.JPG" width="648" height="514" alt="" /><br /><br /></div></div><img src ="http://www.cppblog.com/bennycen/aggbug/173603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bennycen/" target="_blank">bennycen</a> 2012-05-03 21:38 <a href="http://www.cppblog.com/bennycen/archive/2012/05/03/173603.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AnyC:添加类型限制</title><link>http://www.cppblog.com/bennycen/archive/2012/03/22/168654.html</link><dc:creator>bennycen</dc:creator><author>bennycen</author><pubDate>Thu, 22 Mar 2012 14:14:00 GMT</pubDate><guid>http://www.cppblog.com/bennycen/archive/2012/03/22/168654.html</guid><wfw:comment>http://www.cppblog.com/bennycen/comments/168654.html</wfw:comment><comments>http://www.cppblog.com/bennycen/archive/2012/03/22/168654.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/bennycen/comments/commentRss/168654.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bennycen/services/trackbacks/168654.html</trackback:ping><description><![CDATA[为AnyC添加了函数调用时的参数类型限制功能，可以限制改函数的某个参数的具体类型！<br />截图如下：<br /><img height="331" alt="" src="http://www.cppblog.com/images/cppblog_com/bennycen/1111.jpg" width="355" border="0" />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;check(</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;k,j)<br /></span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;print(j&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;k&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000"></span><span style="color: #008000">//</span><span style="color: #008000">check("world","hello");</span><span style="color: #008000"><br /></span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #008000"></span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;add(</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;a)<br /></span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;(&nbsp;b)<br /></span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a</span><span style="color: #000000">+</span><span style="color: #000000">b;<br /></span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">class&nbsp;Test<br /></span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">public:<br /></span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;add(</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;a,&nbsp;b)<br /></span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<br /></span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a</span><span style="color: #000000">+</span><span style="color: #000000">b;<br /></span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;k&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Test();<br /></span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">print(k.add(</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">2</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;ppp(</span><span style="color: #000000">&lt;</span><span style="color: #000000">array</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;arrs,</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;_index)<br /></span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;arrs[_index];<br /></span><span style="color: #008080">31</span>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">32</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">33</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;ks&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;[</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">3</span><span style="color: #000000">,</span><span style="color: #000000">4</span><span style="color: #000000">,</span><span style="color: #000000">5</span><span style="color: #000000">];<br /></span><span style="color: #008080">34</span>&nbsp;<span style="color: #000000">ppp(ks,</span><span style="color: #000000">1</span><span style="color: #000000">);<br /></span><span style="color: #008080">35</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">36</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;testValue(</span><span style="color: #000000">&lt;</span><span style="color: #000000">value</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;_v)<br /></span><span style="color: #008080">37</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">38</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;print(_v</span><span style="color: #000000">+</span><span style="color: #000000">"</span><span style="color: #000000">\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">39</span>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">40</span>&nbsp;<span style="color: #000000">testValue(</span><span style="color: #000000">1</span><span style="color: #000000">);<br /></span><span style="color: #008080">41</span>&nbsp;<span style="color: #000000">testValue(</span><span style="color: #000000">1.2</span><span style="color: #000000">);<br /></span><span style="color: #008080">42</span>&nbsp;<span style="color: #000000">testValue(</span><span style="color: #000000">"</span><span style="color: #000000">sss</span><span style="color: #000000">"</span><span style="color: #000000">);<br /></span><span style="color: #008080">43</span>&nbsp;<span style="color: #000000">testValue(</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br /></span><span style="color: #008080">44</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">45</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;testFunc(</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">function</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;_f,_v)<br /></span><span style="color: #008080">46</span>&nbsp;<span style="color: #000000">{<br /></span><span style="color: #008080">47</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;_f(_v);&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">48</span>&nbsp;<span style="color: #000000">}<br /></span><span style="color: #008080">49</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">50</span>&nbsp;<span style="color: #000000"></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;f1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;add(</span><span style="color: #000000">40</span><span style="color: #000000">);<br /></span><span style="color: #008080">51</span>&nbsp;<span style="color: #000000">print(testFunc(f1,</span><span style="color: #000000">2</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">\n</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div>&nbsp;<br /><img src ="http://www.cppblog.com/bennycen/aggbug/168654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bennycen/" target="_blank">bennycen</a> 2012-03-22 22:14 <a href="http://www.cppblog.com/bennycen/archive/2012/03/22/168654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>作品：动态语言AnyC 1.0</title><link>http://www.cppblog.com/bennycen/archive/2012/03/08/167373.html</link><dc:creator>bennycen</dc:creator><author>bennycen</author><pubDate>Thu, 08 Mar 2012 03:05:00 GMT</pubDate><guid>http://www.cppblog.com/bennycen/archive/2012/03/08/167373.html</guid><wfw:comment>http://www.cppblog.com/bennycen/comments/167373.html</wfw:comment><comments>http://www.cppblog.com/bennycen/archive/2012/03/08/167373.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/bennycen/comments/commentRss/167373.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bennycen/services/trackbacks/167373.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、缘起一直很想做一个自己的动态语言了，记得三年前学习Compiler的时候做了不成器的Tiny++和语法全部按足《编译原理实践》的C--，其中C--还做得非常不好(基本只能看看用不了)，然后上次看了《游戏脚本高级编程》，里面介绍的XScript虽然非常简单，但已经有语言的影子。然后又看了《python源码剖析》，看了python的源码，学习了很多python的内部机理，感觉python虽强大巧妙...&nbsp;&nbsp;<a href='http://www.cppblog.com/bennycen/archive/2012/03/08/167373.html'>阅读全文</a><img src ="http://www.cppblog.com/bennycen/aggbug/167373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bennycen/" target="_blank">bennycen</a> 2012-03-08 11:05 <a href="http://www.cppblog.com/bennycen/archive/2012/03/08/167373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>水文：浅析PE File</title><link>http://www.cppblog.com/bennycen/archive/2011/09/02/154970.html</link><dc:creator>bennycen</dc:creator><author>bennycen</author><pubDate>Fri, 02 Sep 2011 12:18:00 GMT</pubDate><guid>http://www.cppblog.com/bennycen/archive/2011/09/02/154970.html</guid><wfw:comment>http://www.cppblog.com/bennycen/comments/154970.html</wfw:comment><comments>http://www.cppblog.com/bennycen/archive/2011/09/02/154970.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/bennycen/comments/commentRss/154970.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bennycen/services/trackbacks/154970.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;编译过的二进制代码本身是一种数据结构，在代码被载入内存执行的时候，由操作系统对这种数据结构进行操作，具体到Win32平台，就是所谓的PE文件头。&nbsp;对于Windows系统,源代码是如何转化为二进制代码?全局变量存储在什么地方,如何初始化?共享变量是如何工作?理解PE文件格式能更好地理解上面的问题.举个例子，我们使用C++编写源代码，这些源代码被编译器翻译成obj格式的目标文件，...&nbsp;&nbsp;<a href='http://www.cppblog.com/bennycen/archive/2011/09/02/154970.html'>阅读全文</a><img src ="http://www.cppblog.com/bennycen/aggbug/154970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bennycen/" target="_blank">bennycen</a> 2011-09-02 20:18 <a href="http://www.cppblog.com/bennycen/archive/2011/09/02/154970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>