﻿<?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++博客-实时阴影绘制技术研究-随笔分类-graphic</title><link>http://www.cppblog.com/shadow/category/614.html</link><description>埋骨何须桑梓地，人生何处不青山&lt;br&gt;
&lt;script src='http://s26.cnzz.com/stat.php?id=149868&amp;web_id=149868&amp;show=pic' language='JavaScript' charset='gb2312'&gt;&lt;/script&gt;
&lt;script src="http://www.xcinfo.ha.cn/jsq/default.asp?User=softshadow&amp;Length=6&amp;x=15&amp;y=20&amp;Mode=002"&gt;&lt;/script&gt;
&lt;script src="http://raptor.512j.com/count/c/qqcf.asp?user_name=shadow"&gt;&lt;/script&gt;
</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 06:19:31 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 06:19:31 GMT</pubDate><ttl>60</ttl><item><title>BHRE Release 1.0</title><link>http://www.cppblog.com/shadow/archive/2006/08/02/10783.html</link><dc:creator>苦行僧</dc:creator><author>苦行僧</author><pubDate>Wed, 02 Aug 2006 13:05:00 GMT</pubDate><guid>http://www.cppblog.com/shadow/archive/2006/08/02/10783.html</guid><wfw:comment>http://www.cppblog.com/shadow/comments/10783.html</wfw:comment><comments>http://www.cppblog.com/shadow/archive/2006/08/02/10783.html#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://www.cppblog.com/shadow/comments/commentRss/10783.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadow/services/trackbacks/10783.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: BHRE是由北京航空航天大学计算机学院虚拟现实与可视化研究所自主研发的新一代图形绘制引擎。 <br><br>BHRE使用OpenGL作为底层图形API，采用CG作为Shader开发语言，在场景组织和状态管理的基本数据结构基础上，研发了包括一系列面向三维游戏、仿真模拟、漫游展示等实时三维图形应用的功能。<br><br>    * Features<br>          o 基本3DS模型载入<br>          o 视点运动<br>          o 对象运动<br>          o 裁减算法<br>          o 天空盒<br>          o 大规模地形 <br>          o 三维声音<br>          o 碰撞检测<br>          o 雾效果 <br>          o 多光源效果<br>          o 基于GPU的水波特效<br>          o Video纹理<br>          o LOD &nbsp;&nbsp;<a href='http://www.cppblog.com/shadow/archive/2006/08/02/10783.html'>阅读全文</a><img src ="http://www.cppblog.com/shadow/aggbug/10783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadow/" target="_blank">苦行僧</a> 2006-08-02 21:05 <a href="http://www.cppblog.com/shadow/archive/2006/08/02/10783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>又好几天没更新了</title><link>http://www.cppblog.com/shadow/archive/2006/05/19/7411.html</link><dc:creator>苦行僧</dc:creator><author>苦行僧</author><pubDate>Fri, 19 May 2006 08:09:00 GMT</pubDate><guid>http://www.cppblog.com/shadow/archive/2006/05/19/7411.html</guid><wfw:comment>http://www.cppblog.com/shadow/comments/7411.html</wfw:comment><comments>http://www.cppblog.com/shadow/archive/2006/05/19/7411.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadow/comments/commentRss/7411.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadow/services/trackbacks/7411.html</trackback:ping><description><![CDATA[终于把基于CgFx的引擎调出来了，这周要重新规划一下了，又要考虑好多东西，还没有形成思路，就零零散散的记录一些吧。<br /><br />1，FragmentProgram不处理的东西，如fog,depth会自动流到处理他们的环节。<br />2, VertexProgram替代掉的就只是Tranform和Lighting，FragmentProgram替代掉的时Fragment的Color和纹理插值出来的Color按照纹理的颜色模式进行混合的部分。<br />3，openGL的高级版本中有，光照中glLightMode()中可以指定将Specular的部分带到光栅化以后起作用，就是说即便VertexProgram只是输出一个Color值，最后即便采用GL_REPLACE的方式也可以体现出Specular来。我想这一部分FS是不能控制的。<br /><br /><br />看到一个网址：http://tony3d.cnblogs.com/archive/2006/05/02/390753.html<br />本来我写这个是想保存一点资料，转载一点文章（现在也不转了，有时候涉及版权的问题），记录一点心得，没想到这家伙居然把我的blog也列进去了，真是丢人现眼，呵呵，还是找写真正高手的blog吧，比如http://www.humus.ca/。<br /><img src ="http://www.cppblog.com/shadow/aggbug/7411.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadow/" target="_blank">苦行僧</a> 2006-05-19 16:09 <a href="http://www.cppblog.com/shadow/archive/2006/05/19/7411.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shader学习笔记（4）－关于cg1.2和cg1.4的发展历程</title><link>http://www.cppblog.com/shadow/archive/2006/04/25/6286.html</link><dc:creator>苦行僧</dc:creator><author>苦行僧</author><pubDate>Tue, 25 Apr 2006 15:41:00 GMT</pubDate><guid>http://www.cppblog.com/shadow/archive/2006/04/25/6286.html</guid><wfw:comment>http://www.cppblog.com/shadow/comments/6286.html</wfw:comment><comments>http://www.cppblog.com/shadow/archive/2006/04/25/6286.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadow/comments/commentRss/6286.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadow/services/trackbacks/6286.html</trackback:ping><description><![CDATA[流水帐，随手记下：<br /><ul><li><span style="font-family: SimSun;" lang="ZH-CN">直到现在我才明白，</span><span style="font-family: Verdana;" lang="EN-US">CG</span><span style="font-family: SimSun;" lang="ZH-CN">是</span><span style="font-family: Verdana;" lang="EN-US">CG</span><span style="font-family: SimSun;" lang="ZH-CN">，</span><span style="font-family: Verdana;" lang="EN-US">CGFX</span><span style="font-family: SimSun;" lang="ZH-CN">是</span><span style="font-family: Verdana;" lang="EN-US">CGFX</span><span style="font-family: SimSun;" lang="ZH-CN">，</span><span style="font-family: Verdana;" lang="EN-US">CG</span><span style="font-family: SimSun;" lang="ZH-CN">是一种语言，</span><span style="font-family: Verdana;" lang="EN-US">CGFX</span><span style="font-family: SimSun;" lang="ZH-CN">是一套编程模型，而我们要做的是封装</span><span style="font-family: Verdana;" lang="EN-US">cgFX</span><span style="font-family: SimSun;" lang="ZH-CN">，有了</span><span style="font-family: Verdana;" lang="EN-US">CGFX</span><span style="font-family: SimSun;" lang="ZH-CN">就有更强的一种表达，可以对不同的</span><span style="font-family: Verdana;" lang="EN-US">Profile</span><span style="font-family: SimSun;" lang="ZH-CN">指定配置，可以设定</span><span style="font-family: Verdana;" lang="EN-US">openGL state</span><span style="font-family: SimSun;" lang="ZH-CN">。</span></li></ul><span style="font-family: SimSun;" lang="ZH-CN"></span><ul><li><span style="font-family: SimSun;" lang="ZH-CN">对于</span><span style="font-family: Verdana;" lang="EN-US">D3D</span><span style="font-family: SimSun;" lang="ZH-CN">的绘制方式而言，是根据名字得到</span><span style="font-family: Verdana;" lang="EN-US">Technique</span><span style="font-family: SimSun;" lang="ZH-CN">的句柄，然后每次绘制</span><span style="font-family: Verdana;" lang="EN-US">Mesh</span><span style="font-family: SimSun;" lang="ZH-CN">前设定生效的</span><span style="font-family: Verdana;" lang="EN-US">Technique</span><span style="font-family: SimSun;" lang="ZH-CN">，在遍历该</span><span style="font-family: Verdana;" lang="EN-US">Technique</span><span style="font-family: SimSun;" lang="ZH-CN">下的所有</span><span style="font-family: Verdana;" lang="EN-US">Pass</span><span style="font-family: SimSun;" lang="ZH-CN">，逐一进行绘制；</span></li><li><span style="font-family: SimSun;" lang="ZH-CN">那么对于</span><span style="font-family: Verdana;" lang="EN-US">OpenGL</span><span style="font-family: SimSun;" lang="ZH-CN">来说，我们只知道在</span><span style="font-family: Verdana;" lang="EN-US">CreateProgram</span><span style="font-family: SimSun;" lang="ZH-CN">的时候指定一个入口函数，那对于具有多个</span><span style="font-family: Verdana;" lang="EN-US">Technique</span><span style="font-family: SimSun;" lang="ZH-CN">的情况我们还不知道怎么进行切换，是用两个</span><span style="font-family: Verdana;" lang="EN-US">Program</span><span style="font-family: SimSun;" lang="ZH-CN">表示呢，还是调用什么参数可以切换？</span></li><li><span style="font-family: SimSun;" lang="ZH-CN">但是不管怎么表示，从概念上是应该允许像</span><span style="font-family: Verdana;" lang="EN-US">D3D</span><span style="font-family: SimSun;" lang="ZH-CN">那样指定的，即在某一个</span><span style="font-family: Verdana;" lang="EN-US">Mesh</span><span style="font-family: SimSun;" lang="ZH-CN">绘制前指定用某一个</span><span style="font-family: Verdana;" lang="EN-US">Effect</span><span style="font-family: SimSun;" lang="ZH-CN">的某一个</span><span style="font-family: Verdana;" lang="EN-US">Technique</span><span style="font-family: SimSun;" lang="ZH-CN">，甚至</span><span style="font-family: Verdana;" lang="EN-US">Pass</span><span style="font-family: SimSun;" lang="ZH-CN">。</span></li><li><span style="font-family: SimSun;" lang="ZH-CN">后来查到在cg1.2发布的cg_tookit里边提供了CgFx的很好的支持，能够想D3D Effect格式那样ICgFxEffect-&gt;setTechnique()，有pass-&gt;begin(),pass-&gt;end()这种方法，但是不知道为什么到cg1.4把这些东西去掉了。在cgReleaseNote里边写到：</span></li><ul><li><span style="font-family: SimSun;" lang="ZH-CN">Complete rewrite of CgFX, including an API integrated with the Cg runtime API, support for extensible, cross-platform graphics state management, and support for unsized arrays and interfaces.</span></li></ul></ul><span style="font-family: SimSun;" lang="ZH-CN">    就是说重写了，跟以前不一样儿了，后边给了对于使用CgFx库的说明：<br /></span><blockquote><ul><li><span style="font-family: SimSun;" lang="ZH-CN">Applications and effects that used previous versions of CgFX will require modification.Applications that use CgFX will have to be modified to use the new CgFX API. If the supplied OpenGL state manager for CgFX is used, the effect files themselves must be modified. The effects must be changed to use OpenGL state assignments, rather than the D3D state assignments supported in prior versions of CgFX. A subsequent release of Cg will provide D3D and cross-platform state managers for CgFX.</span></li><li><span style="font-family: SimSun;" lang="ZH-CN">CgFX has been redesigned and re-implemented. As noted above, existing applications that use CgFX must be modified if the new API is to be used. In addition, if you wish to use the supplied “native” OpenGL state manager, which assumes that OpenGL-style state names and vales are used in effects, existing effects must be modified to use OpenGL-style states. See the “Introduction to CgFX” chapter in the Cg Users Manual for more details. If you have questions or problems related to porting existing CgFX applications, please contact NVIDIA developer relations.<br /></span></li></ul><span style="font-family: SimSun;" lang="ZH-CN">太恶心了，就是说原来如果你用了很好实现的CgFx，现在对不起，不能用了。</span><span style="font-family: SimSun;" lang="ZH-CN">所以我看到</span><span style="font-family: SimSun;" lang="ZH-CN">的早期的使用cg1.2的</span><span style="font-family: Verdana;" lang="EN-US">nebula2</span><span style="font-family: SimSun;" lang="ZH-CN">都封装了</span><span style="font-family: Verdana;" lang="EN-US">CGFX</span><span style="font-family: SimSun;" lang="ZH-CN">，但是到了</span><span style="font-family: Verdana;" lang="EN-US">1.4</span><span style="font-family: SimSun;" lang="ZH-CN">不知道为什么，发布的</span><span style="font-family: Verdana;" lang="EN-US">CG_tookit</span><span style="font-family: SimSun;" lang="ZH-CN">里边却去掉了这个</span><span style="font-family: Verdana;" lang="EN-US">CGFX</span><span style="font-family: SimSun;" lang="ZH-CN">的运行库。</span><span style="font-family: Verdana;" lang="EN-US">nebula2</span><span style="font-family: SimSun;" lang="ZH-CN">新的版本也去掉了</span><span style="font-family: Verdana;" lang="EN-US">CGFX</span><span style="font-family: SimSun;" lang="ZH-CN">，只剩下</span><span style="font-family: Verdana;" lang="EN-US">D3DShader</span><span style="font-family: SimSun;" lang="ZH-CN">的支持。</span><br />上边这段话最后<span style="font-family: SimSun;" lang="ZH-CN">说如果有问题，联系Nvidia developer relations。我想一想也没有办法了，去问wj大牛都不知道怎么回事儿，那只好去问一下了，结果到了nvidia developer网站上也差不到可以直接问谁，还填了一张表注册了一个用户，现在还没有被批下来。最后实在等不及了，去论坛上问吧。下面几个地址，没准儿有熟知cg的人可以答复一下.<br /></span><p style="margin: 0in; font-family: SimSun; font-size: 10pt;"><a href="http://www.gamedev.net/community/forums/topic.asp?topic_id=389475">http://www.gamedev.net/community/forums/topic.asp?topic_id=389475</a></p><p style="margin: 0in; font-family: SimSun; font-size: 10pt;"> </p><p style="margin: 0in; font-family: SimSun; font-size: 10pt;"><a href="http://www.smth.org/bbscon.php?bid=50&amp;id=43518">http://www.smth.org/bbscon.php?bid=50&amp;id=43518</a></p><p style="margin: 0in; font-family: SimSun; font-size: 10pt;"> </p><p style="margin: 0in; font-family: SimSun; font-size: 10pt;"><a href="http://www.smth.org/bbscon.php?bid=197&amp;id=50169">http://www.smth.org/bbscon.php?bid=197&amp;id=50169</a></p><p style="margin: 0in; font-family: SimSun; font-size: 10pt;"> </p><p style="margin: 0in; font-family: SimSun; font-size: 10pt;"><a href="http://forums.nvidia.com/index.php?showtopic=13875">http://forums.nvidia.com/index.php?showtopic=13875</a></p><p style="margin: 0in; font-family: SimSun; font-size: 10pt;"><br /></p></blockquote>再看看Nvidia到底怎么说的：<br /><ul><li><span style="font-family: Verdana;" lang="EN-US">Cg1</span><span style="font-family: SimSun;" lang="EN-US">.1</span><span style="font-family: SimSun;" lang="ZH-CN">里边关于</span><span style="font-family: SimSun;" lang="EN-US">cgFX</span><span style="font-family: SimSun;" lang="ZH-CN">说：</span></li></ul><p style="margin: 0in 0in 0in 0.5in; font-family: SimSun; font-size: 10pt;">CgFX beta support for DirectX 8, DirectX 9, and OpenGL </p><ul><li><span style="font-family: Verdana;" lang="EN-US">Cg1</span><span style="font-family: SimSun;" lang="EN-US">.2</span><span style="font-family: SimSun;" lang="ZH-CN">里边关于</span><span style="font-family: SimSun;" lang="EN-US">cgFX</span><span style="font-family: SimSun;" lang="ZH-CN">说：</span></li></ul><p style="margin: 0in 0in 0in 0.5in; font-family: SimSun; font-size: 10pt;">Cg Effects Explained document  </p><p style="margin: 0in 0in 0in 0.5in; font-family: SimSun; font-size: 10pt;">CgFX beta support for DirectX 8, DirectX 9, and OpenGL</p><ul><li><span style="font-family: Verdana;" lang="EN-US">Cg</span><span style="font-family: SimSun;" lang="EN-US">1.4.1</span><span style="font-family: SimSun;" lang="ZH-CN">里边关于</span><span style="font-family: SimSun;" lang="EN-US">cgFX</span><span style="font-family: SimSun;" lang="ZH-CN">说：</span></li></ul><p style="margin: 0in 0in 0in 0.5in; font-family: SimSun; font-size: 10pt;">Complete rewrite of CgFX, including an API integrated with
the Cg runtime API, support for extensible, cross-platform graphics state
management, and support for unsized arrays and interfaces. </p><ul><li><span style="font-family: Verdana;" lang="EN-US">Cg1</span><span style="font-family: SimSun;" lang="EN-US">.5beta</span><span style="font-family: SimSun;" lang="ZH-CN">里边关于</span><span style="font-family: SimSun;" lang="EN-US">cgFX</span><span style="font-family: SimSun;" lang="ZH-CN">说：</span></li></ul><p style="margin: 0in 0in 0in 0.5in; font-family: SimSun; font-size: 10pt;">Cg 1.3 and 1.4 style Effects files supported</p><br /><br /><ul><li><span style="font-family: SimSun;" lang="ZH-CN">又考察了</span><span style="font-family: Verdana;" lang="EN-US">openGL2.0</span><span style="font-family: SimSun;" lang="ZH-CN">和</span><span style="font-family: Verdana;" lang="EN-US">GLSL</span><span style="font-family: SimSun;" lang="ZH-CN">，发现对于绘制的描述感觉跟</span><span style="font-family: Verdana;" lang="EN-US">CG1.4</span><span style="font-family: SimSun;" lang="ZH-CN">的</span><span style="font-family: Verdana;" lang="EN-US">FX</span><span style="font-family: SimSun;" lang="ZH-CN">的运行库也差不多，又因为不熟悉，还是回头看</span><span style="font-family: Verdana;" lang="EN-US">cgFX</span><span style="font-family: SimSun;" lang="ZH-CN">吧。</span></li><li><span style="font-family: SimSun;" lang="ZH-CN">装了</span><span style="font-family: Verdana;" lang="EN-US">cg</span><span style="font-family: SimSun;" lang="EN-US">1.2</span><span style="font-family: SimSun;" lang="ZH-CN">看原来的文档，学习笔记如下：</span></li></ul><ul style="margin-left: 0.5in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;" type="circle"><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: Verdana;" lang="EN-US">cgFX</span><span style="font-family: SimSun;" lang="ZH-CN">主要提供了三点好处：</span></li><ul style="margin-left: 0.5in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;" type="disc"><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;" lang="ZH-CN">不同硬件得以配置</span><span style="font-family: Verdana;" lang="EN-US">(technique,profile)</span></li><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;" lang="ZH-CN">多遍绘制的描述</span><span style="font-family: Verdana;" lang="EN-US">(pass)</span></li><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;" lang="ZH-CN">表达了环境信息</span><span style="font-family: Verdana;" lang="EN-US">(state)</span></li></ul><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: Verdana;" lang="EN-US">cgFX</span><span style="font-family: SimSun;" lang="ZH-CN">同</span><span style="font-family: Verdana;" lang="EN-US">microsoft FX</span><span style="font-family: SimSun;" lang="EN-US">2.0</span><span style="font-family: SimSun;" lang="ZH-CN">和</span><span style="font-family: SimSun;" lang="EN-US">DirectX9.0</span><span style="font-family: SimSun;" lang="ZH-CN">的</span><span style="font-family: SimSun;" lang="EN-US">Effect</span><span style="font-family: SimSun;" lang="ZH-CN">格式相似</span></li><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: Verdana;" lang="EN-US">cgFX</span><span style="font-family: SimSun;" lang="ZH-CN">既可以在</span><span style="font-family: Verdana;" lang="EN-US">openGL</span><span style="font-family: SimSun;" lang="ZH-CN">又可以在</span><span style="font-family: Verdana;" lang="EN-US">D3D</span><span style="font-family: SimSun;" lang="ZH-CN">上运行，便于以后扩展</span></li><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;">主要方法接口：</span></li></ul><blockquote><blockquote><ul><li><span style="font-family: SimSun;">CgFXCreateEffect，CgFXCreateEffectFromFileA，CgFXCreateEffectCompiler，CgFXCreateEffectCompilerFromFileA</span></li><li><span style="font-family: SimSun;">CgFXSetDevice，CgFXFreeDevice</span></li><li><span style="font-family: SimSun;">CGFXHANDLE
       GetTechnique(UINT index);CGFXHANDLE GetTechniqueByName(LPCSTR name);</span></li><li><span style="font-family: SimSun;">CGFXHANDLE
       GetPass(CGFXHANDLE technique, UINT index);CGFXHANDLE
       GetPassByName(CGFXHANDLE technique, LPCSTR name);</span></li><li><span style="font-family: SimSun;">CGFXHANDLE
       GetParameter(CGFXHANDLE parent, UINT index);</span></li></ul></blockquote></blockquote><blockquote><blockquote><ul><li>CGFXHANDLE GetParameterByName(CGFXHANDLE parent, LPCSTR
name);</li><li>CGFXHANDLE GetParameterBySemantic(CGFXHANDLE parent, LPCSTR
name);</li><li>CGFXHANDLE GetParameterElement(CGFXHANDLE parent, UINT
element);</li></ul></blockquote></blockquote><blockquote><blockquote><ul><li><span style="font-family: SimSun;">HRESULT
     FindNextValidTechnique(CGFXHANDLE hTechnique,CGFXHANDLE *pTechnique);</span></li><li><span style="font-family: SimSun;">HRESULT
     SetTechnique(CGFXHANDLE pTechnique);CGFXHANDLE GetCurrentTechnique();</span></li><li><span style="font-family: SimSun;">HRESULT
     Begin(UINT* pPasses, DWORD Flags);HRESULT Pass(UINT passNum);HRESULT
     End();</span></li><li><span style="font-family: SimSun;">HRESULT
     CloneEffect(ICgFXEffect** ppNewEffect);</span></li></ul></blockquote></blockquote><blockquote><blockquote><ul><li>HRESULT GetDevice(LPVOID* ppDevice);</li><li>HRESULT OnLostDevice();</li><li>HRESULT OnResetDevice();</li></ul></blockquote></blockquote><ul><li><span style="font-family: SimSun;">主要接口：</span></li></ul><ul style="margin-left: 0.5in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;" type="disc"><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;">ICgFXBaseEffect</span></li><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;">ICgFXEffect</span></li><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;">ICgFXEffectCompiler</span></li></ul><img src ="http://www.cppblog.com/shadow/aggbug/6286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadow/" target="_blank">苦行僧</a> 2006-04-25 23:41 <a href="http://www.cppblog.com/shadow/archive/2006/04/25/6286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shader学习笔记（3）－cg  openGL runtime library</title><link>http://www.cppblog.com/shadow/archive/2006/04/22/6070.html</link><dc:creator>苦行僧</dc:creator><author>苦行僧</author><pubDate>Fri, 21 Apr 2006 22:37:00 GMT</pubDate><guid>http://www.cppblog.com/shadow/archive/2006/04/22/6070.html</guid><wfw:comment>http://www.cppblog.com/shadow/comments/6070.html</wfw:comment><comments>http://www.cppblog.com/shadow/archive/2006/04/22/6070.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/shadow/comments/commentRss/6070.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadow/services/trackbacks/6070.html</trackback:ping><description><![CDATA[<p style="margin: 0in; font-size: 10pt;">
				<span style="font-family: Verdana;" lang="EN-US">shade</span>
				<span style="font-family: SimSun;" lang="ZH-CN">学习笔记（</span>
				<span style="font-family: Verdana;" lang="EN-US">3</span>
				<span style="font-family: SimSun;" lang="ZH-CN">）－</span>
				<span style="font-family: Verdana;" lang="EN-US">cg openGL runtime</span>
				<span style="font-family: SimSun;" lang="EN-US">
library</span>
		</p>
		<ol>
				<li>
						<span style="font-family: SimSun;" lang="ZH-CN">当</span>
						<span style="font-family: Verdana;" lang="EN-US">uniform</span>
						<span style="font-family: SimSun;" lang="ZH-CN">参数设置到</span>
						<span style="font-family: Verdana;" lang="EN-US">openGL</span>
						<span style="font-family: SimSun;" lang="ZH-CN">以后是保存在</span>
						<span style="font-family: Verdana;" lang="EN-US">CG
     openGL runtime</span>
						<span style="font-family: SimSun;" lang="ZH-CN">里边或者</span>
						<span style="font-family: Verdana;" lang="EN-US">cg core runtime</span>
						<span style="font-family: SimSun;" lang="ZH-CN">里边，而</span>
						<span style="font-family: Verdana;" lang="EN-US">d</span>
						<span style="font-family: SimSun;" lang="EN-US">3d</span>
						<span style="font-family: SimSun;" lang="ZH-CN">是直接保存到</span>
						<span style="font-family: SimSun;" lang="EN-US">GPU</span>
						<span style="font-family: SimSun;" lang="ZH-CN">的</span>
						<span style="font-family: SimSun;" lang="EN-US">constant memory</span>
						<span style="font-family: SimSun;" lang="ZH-CN">里边。</span>
						<span style="font-family: Verdana;" lang="EN-US">
						</span>
				</li>
				<li>
						<span style="font-family: Verdana;" lang="EN-US">openGL</span>
						<span style="font-family: SimSun;" lang="ZH-CN">在使用</span>
						<span style="font-family: Verdana;" lang="EN-US">CG</span>
						<span style="font-family: SimSun;" lang="ZH-CN">的时候必须首先使用wglCreateContext()
     or glXCreateContext()来创建</span>
						<span style="font-family: Verdana;" lang="EN-US">openGL Context</span>
						<span style="font-family: SimSun;" lang="ZH-CN">。</span>
						<span style="font-family: SimSun;" lang="ZH-CN">
						</span>
				</li>
				<li>
						<span style="font-family: SimSun;" lang="ZH-CN">设置</span>
						<span style="font-family: Verdana;" lang="EN-US">Uniform</span>参数：</li>
		</ol>
		<span style="font-family: SimSun;" lang="ZH-CN">
		</span>
		<ul style="margin-left: 0.5in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;" type="circle">
				<li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;">
						<span style="font-family: SimSun;" lang="ZH-CN">cgGLSetParameter，两种类型</span>
						<span style="font-family: Verdana;" lang="EN-US">float</span>
						<span style="font-family: SimSun;" lang="EN-US">(f),double(d).</span>
				</li>
				<li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;">
						<span style="font-family: SimSun;" lang="ZH-CN">cgGLSetMatrixParameterfr</span>
						<span style="font-family: Verdana;" lang="EN-US">,</span>
						<span style="font-family: SimSun;" lang="ZH-CN">cgGLSetMatrixParameter</span>
						<span style="font-family: Verdana;" lang="EN-US">dc,</span>
						<span style="font-family: SimSun;" lang="ZH-CN">四种，</span>
						<span style="font-family: Verdana;" lang="EN-US">c</span>
						<span style="font-family: SimSun;" lang="ZH-CN">表示列向量为主，</span>
						<span style="font-family: Verdana;" lang="EN-US">r</span>
						<span style="font-family: SimSun;" lang="ZH-CN">表示</span>
						<span style="font-family: Verdana;" lang="EN-US">row</span>
						<span style="font-family: SimSun;" lang="ZH-CN">向量为主。</span>
				</li>
				<li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;">
						<span style="font-family: SimSun;" lang="ZH-CN">cgGLSetStateMatrixParameter()可以用来设置状态矩阵，包括</span>
						<span style="font-family: Verdana;" lang="EN-US">ModelView</span>
						<span style="font-family: SimSun;" lang="ZH-CN">矩阵，</span>
						<span style="font-family: Verdana;" lang="EN-US">Projection</span>
						<span style="font-family: SimSun;" lang="ZH-CN">矩阵，纹理矩阵。</span>
				</li>
				<li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;">
						<span style="font-family: SimSun;" lang="ZH-CN">cgGLSetParameterArray（）用来设置</span>
						<span style="font-family: Verdana;" lang="EN-US">Uniform</span>
						<span style="font-family: SimSun;" lang="ZH-CN">的数组参数；cgGLSetMatrixParameterArrayfr用来设置矩阵数组</span>
				</li>
		</ul>    设置变量参数：<br /><span style="font-family: SimSun;"></span><ul style="margin-left: 0.5in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;" type="circle"><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;" lang="ZH-CN">因为</span><span style="font-family: Verdana;" lang="EN-US">FP</span><span style="font-family: SimSun;" lang="ZH-CN">的变量参数是按照光栅化插值后的结果来设置的，所以只有</span><span style="font-family: Verdana;" lang="EN-US">VS</span><span style="font-family: SimSun;" lang="ZH-CN">程序有变量参数。</span></li><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;">设置变量参数两步：</span></li><ol style="margin-left: 0.5in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;" type="i"><li value="1" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-family: SimSun; font-size: 10pt;">cgGLSetParameterPointer()：设置变量数组，我理解就是顶点数组</li><li value="2" style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-family: SimSun; font-size: 10pt;">void
       cgGLEnableClientState(CGparameter parameter);和void
       cgGLDisableClientState(CGparameter parameter);使得该参数有效。</li></ol><ul style="margin-left: 0.5in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;" type="disc"><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;" lang="ZH-CN">注意：cgGLSetParameter也可以用来设置变量参数，这时采用的是</span><span style="font-family: Verdana;" lang="EN-US">openGL</span><span style="font-family: SimSun;" lang="ZH-CN">立即模式，也就相当于</span><span style="font-family: Verdana;" lang="EN-US">glVertex,glNormal</span><span style="font-family: SimSun;" lang="ZH-CN">，</span><span style="font-family: Verdana;" lang="EN-US">glColor</span><span style="font-family: SimSun;" lang="ZH-CN">这样的做法吧，但是我想这显然是一种效率不高的做法。且cgGLGetParameter不能用来取变量参数。</span></li></ul></ul><span style="font-family: SimSun;" lang="ZH-CN">    设置</span><span style="font-family: Verdana;" lang="EN-US">Sampler</span><span style="font-family: SimSun;" lang="ZH-CN">参数：</span><span style="font-family: Verdana;" lang="EN-US">Sampler</span><span style="font-family: SimSun;" lang="ZH-CN">和纹理是一一对应的，所以实际就是对一段顶点绘制指定一个纹理。</span><ul style="margin-left: 0.5in; direction: ltr; unicode-bidi: embed; margin-top: 0in; margin-bottom: 0in;" type="circle"><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;" lang="ZH-CN">cgGLSetTextureParameter(CGparameter
      parameter,GLuint textureName);来指定一个纹理给</span><span style="font-family: Verdana;" lang="EN-US">CGParameter</span><span style="font-family: SimSun;" lang="ZH-CN">。</span></li><li style="margin-top: 0pt; margin-bottom: 0pt; vertical-align: middle; font-size: 10pt;"><span style="font-family: SimSun;" lang="ZH-CN">void
      cgGLEnableTextureParameter(CGparameter parameter);来使纹理生效。void
      cgGLDisableTextureParameter(CGparameter parameter);使其失效，相当于</span><span style="font-family: Verdana;" lang="EN-US">glBindTexture</span><span style="font-family: SimSun;" lang="ZH-CN">命令。</span><span style="font-family: SimSun;" lang="ZH-CN"></span></li></ul><span style="font-family: SimSun;" lang="ZH-CN">void
     cgGLSetOptimalOptions(CGprofile profile);来使用最优的</span><span style="font-family: Verdana;" lang="EN-US">Profile</span><span style="font-family: SimSun;" lang="ZH-CN">。而CGbool
     cgGLIsProfileSupported(CGprofile profile);可以用来判断硬件是否支持该</span><span style="font-family: Verdana;" lang="EN-US">Profile</span>。<br /><br />经过这几天的学习，终于大概明白了shader是怎么work的了，但是对于用programmable pipeline替换掉fixed function还是一头雾水。<br /><span style="font-family: SimSun;" lang="ZH-CN"></span><p style="margin: 0in; font-family: SimSun; font-size: 10pt;"> </p><img src ="http://www.cppblog.com/shadow/aggbug/6070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadow/" target="_blank">苦行僧</a> 2006-04-22 06:37 <a href="http://www.cppblog.com/shadow/archive/2006/04/22/6070.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shader学习笔记（2）- Using Cg Runtime Library整理</title><link>http://www.cppblog.com/shadow/archive/2006/04/21/5989.html</link><dc:creator>苦行僧</dc:creator><author>苦行僧</author><pubDate>Thu, 20 Apr 2006 17:29:00 GMT</pubDate><guid>http://www.cppblog.com/shadow/archive/2006/04/21/5989.html</guid><wfw:comment>http://www.cppblog.com/shadow/comments/5989.html</wfw:comment><comments>http://www.cppblog.com/shadow/archive/2006/04/21/5989.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadow/comments/commentRss/5989.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadow/services/trackbacks/5989.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/shadow/archive/2006/04/21/5989.html'>阅读全文</a><img src ="http://www.cppblog.com/shadow/aggbug/5989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadow/" target="_blank">苦行僧</a> 2006-04-21 01:29 <a href="http://www.cppblog.com/shadow/archive/2006/04/21/5989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>shader学习笔记（1）－basic cg in openGL </title><link>http://www.cppblog.com/shadow/archive/2006/04/20/5916.html</link><dc:creator>苦行僧</dc:creator><author>苦行僧</author><pubDate>Wed, 19 Apr 2006 17:43:00 GMT</pubDate><guid>http://www.cppblog.com/shadow/archive/2006/04/20/5916.html</guid><wfw:comment>http://www.cppblog.com/shadow/comments/5916.html</wfw:comment><comments>http://www.cppblog.com/shadow/archive/2006/04/20/5916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/shadow/comments/commentRss/5916.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/shadow/services/trackbacks/5916.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/shadow/archive/2006/04/20/5916.html'>阅读全文</a><img src ="http://www.cppblog.com/shadow/aggbug/5916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/shadow/" target="_blank">苦行僧</a> 2006-04-20 01:43 <a href="http://www.cppblog.com/shadow/archive/2006/04/20/5916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>