﻿<?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++博客-天地之灵学习小组-随笔分类-天地之灵</title><link>http://www.cppblog.com/jiangnan/category/8791.html</link><description>我们学习小组的OpenGL学习笔记

大家一定要互相折磨呀~~</description><language>zh-cn</language><lastBuildDate>Fri, 14 Nov 2008 20:35:08 GMT</lastBuildDate><pubDate>Fri, 14 Nov 2008 20:35:08 GMT</pubDate><ttl>60</ttl><item><title>11月14日_又过零点了_By Gardon</title><link>http://www.cppblog.com/jiangnan/archive/2008/11/15/66966.html</link><dc:creator>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</dc:creator><author>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</author><pubDate>Fri, 14 Nov 2008 16:25:00 GMT</pubDate><guid>http://www.cppblog.com/jiangnan/archive/2008/11/15/66966.html</guid><wfw:comment>http://www.cppblog.com/jiangnan/comments/66966.html</wfw:comment><comments>http://www.cppblog.com/jiangnan/archive/2008/11/15/66966.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jiangnan/comments/commentRss/66966.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jiangnan/services/trackbacks/66966.html</trackback:ping><description><![CDATA[今天下班比较晚，研究了两个多小时的DXUT，颇有收获。发现DXUT可以自动选择支持DX9/DX10，并且相对来说支持两种DX代价不大。为了周末能在一台XP的电脑上开发，决定优先开发DX9。为了更好的使用DXUT，决定先研究传说中的ConfigSystem&#8230;&#8230;<br>明天就是周末了，终于有充足的时间了，不用加班真美好&#8230;&#8230;<br>
<img src ="http://www.cppblog.com/jiangnan/aggbug/66966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jiangnan/" target="_blank">正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</a> 2008-11-15 00:25 <a href="http://www.cppblog.com/jiangnan/archive/2008/11/15/66966.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>11月13日_今天没啥收获_By Gardon</title><link>http://www.cppblog.com/jiangnan/archive/2008/11/14/66870.html</link><dc:creator>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</dc:creator><author>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</author><pubDate>Thu, 13 Nov 2008 16:30:00 GMT</pubDate><guid>http://www.cppblog.com/jiangnan/archive/2008/11/14/66870.html</guid><wfw:comment>http://www.cppblog.com/jiangnan/comments/66870.html</wfw:comment><comments>http://www.cppblog.com/jiangnan/archive/2008/11/14/66870.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jiangnan/comments/commentRss/66870.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jiangnan/services/trackbacks/66870.html</trackback:ping><description><![CDATA[首先决定暂时不考虑DX9/OGL了，我不可能在不了解一个库的时候就给它留好接口。耽误我挺多时间了，虽然有重大收获&#8230;&#8230;<br>今天的成就是把Shader启动起来了，做了一个花的三角形。<br>不管怎么说，抛弃Framework不谈，本周完成界面显示还是没什么大问题的。剩下的时间我还是去读读ConfigSystem（DXSDK里一个很囧的小球Sample）的整体结构，还有读读DXUT的代码了。<br>如果顺利的话，我也决定采用DXUT开发，因为我没有必要在对整体流程已经了解的情况下，对每个细节了如指掌。我的关注点还是：资源管理、框架、Shader。不能偏离了学习DX的目的。<br><br>没弄明白怎么粘图，那就不管了，反正一个破三角形也没什么好看的&#8230;&#8230;<br>随便改了改代码，用RenderMonkey时写的一些vs和ps的东西还记得。<br>另外Dx10的用于输出的一些Semantics的名字改了：<br>
<table>
    <tbody>
        <tr>
            <th>Direct3D 10 Semantic</th>
            <th>Direct3D 9 Equivalent Semantic</th>
        </tr>
        <tr>
            <td>SV_Depth</td>
            <td>DEPTH</td>
        </tr>
        <tr>
            <td>SV_Position</td>
            <td>POSITION</td>
        </tr>
        <tr>
            <td>SV_Target</td>
            <td>COLOR</td>
        </tr>
    </tbody>
</table>
<p>不管怎么说总是麻烦了一点。讨厌的是RenderMonkey在我的电脑上没装起来，不能方便的编辑shader然后输出fx了。明天还是研究下如何输出编译的错误信息。好歹编不过要能告诉我是哪行编不过才行&#8230;&#8230;<br><br>现在的Shader代码：（就随便搞了下，显示出一个暗红色的怪东西：）<br>struct VS_OUTPUT<br>{<br>&nbsp;float4 Pos : SV_POSITION;<br>&nbsp;float4 Color: COLOR0;<br>};</p>
<p>VS_OUTPUT VS( float4 Pos : POSITION )<br>{<br>&nbsp;VS_OUTPUT Output;<br>&nbsp;Output.Pos = Pos;<br>&nbsp;Output.Color = float4( 0.3f, Pos.y, Pos.x, 1.0f );<br>&nbsp;&nbsp;&nbsp; return Output;<br>}</p>
<p>struct PS_OUTPUT<br>{<br>&nbsp;&nbsp;&nbsp; float4 RGBColor : SV_Target;&nbsp; // Pixel color&nbsp;&nbsp;&nbsp; <br>};</p>
<p>PS_OUTPUT PS( float4 Pos : SV_POSITION,<br>&nbsp;&nbsp;&nbsp;&nbsp;float4 Color: COLOR0 )<br>{<br>&nbsp;PS_OUTPUT Output;<br>&nbsp;&nbsp;&nbsp; Output.RGBColor = Color;<br>&nbsp;&nbsp;&nbsp; return Output;<br>}</p>
<p>technique10 R0<br>{<br>&nbsp;&nbsp;&nbsp; pass P0<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetVertexShader( CompileShader( vs_4_0, VS() ) );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetGeometryShader( NULL );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetPixelShader( CompileShader( ps_4_0, PS() ) );<br>&nbsp;&nbsp;&nbsp; }<br>}<br><br>主要是把Tutorial2里的fx拿出来，把两个输出从单纯的float4变成了一个结构体，然后给VS的输出增加了一个Color，最后再把坐标的一部分当作颜色输出了出去。</p>
<img src ="http://www.cppblog.com/jiangnan/aggbug/66870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jiangnan/" target="_blank">正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</a> 2008-11-14 00:30 <a href="http://www.cppblog.com/jiangnan/archive/2008/11/14/66870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>11月12日_重大突破_ By Gardon</title><link>http://www.cppblog.com/jiangnan/archive/2008/11/12/66770.html</link><dc:creator>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</dc:creator><author>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</author><pubDate>Wed, 12 Nov 2008 14:59:00 GMT</pubDate><guid>http://www.cppblog.com/jiangnan/archive/2008/11/12/66770.html</guid><wfw:comment>http://www.cppblog.com/jiangnan/comments/66770.html</wfw:comment><comments>http://www.cppblog.com/jiangnan/archive/2008/11/12/66770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jiangnan/comments/commentRss/66770.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jiangnan/services/trackbacks/66770.html</trackback:ping><description><![CDATA[<p>好吧，今晚有重大突破，那就是：窗口显示出来老！v ~。~b<br>就是DXSDK里那个蓝蓝的窗口，不过我为了搭建Frame，绕了好多弯，刚刚才终于显示出来。<br>目前完成了GraphicsDevice类的创建了，我正在考虑怎样设计通用的点列表、材质等等接口，得寻人咨询下OpenGL的关于点列表的接口。如果大家都是自定义结构体+参数那就没什么好说的老，把点列表做成一个点容器那么复杂似乎也没有必要。唉，做到再说吧！ <br><br>目前的主函数代码：<br><br>int _tmain(int argc, _TCHAR* argv[])<br>{<br>&nbsp;InitFramework();<br>&nbsp;CComPtr&lt;IGraphicsLibrary&gt; pGL;<br>&nbsp;if (FAILED(GetDefaultFrameworkLibrary(&amp;pGL)))<br>&nbsp;{<br>&nbsp;&nbsp;wprintf(L"No default graphics library found.\n");<br>&nbsp;&nbsp;ATLASSERT(false);<br>&nbsp;&nbsp;return 1;<br>&nbsp;}<br>&nbsp;CComBSTR bsGLName;<br>&nbsp;if (SUCCEEDED(pGL-&gt;GetLibraryName(&amp;bsGLName)))<br>&nbsp;{<br>&nbsp;&nbsp;wprintf(L"Default graphics library is: %s\n", (BSTR)bsGLName);<br>&nbsp;}</p>
<p>&nbsp;pGL-&gt;EnumAdapters();</p>
<p>&nbsp;CComPtr&lt;IGraphicsDevice&gt; pGraphicsDevice;<br>&nbsp;if (FAILED(pGL-&gt;CreateGraphicsDevice(FALSE, 640, 480, L"Only a test", &amp;pGraphicsDevice)))<br>&nbsp;{<br>&nbsp;&nbsp;ATLASSERT(false);<br>&nbsp;&nbsp;return 1;<br>&nbsp;}</p>
<p>&nbsp;FrameworkSimpleMainLoop(pGraphicsDevice);<br>&nbsp;return 0;<br>}</p>
<p>最后的FrameworkSimpleMainLoop就是近似传说中的glutMainLoop啦，不过为了避免全局变量，我把pGraphicsDevice给传进去了&#8230;&#8230;<br>然后想想貌似这里没什么避免全局变量的必要（或者整个类，然后用静态变量算了）。现在的话，如果想在MainLoop内更换GraphicsDevice，原来的Device的引用计数也释放不掉了。<br>然后觉得一开始的注册可用库之类的流程也要改，目前那个全局map也会把所有的DLL都保留着，没有释放掉。<br>最好的办法是，全局map里只保留创建函数，在获取Library。主程序可以Enum每个可用类（按接口），传递GUID进去，获得一个接口，也可以选择创建默认类，然后获得一个接口。在InitFramework的时候，每个DLL只尝试性连接，如果连接成功，可以立刻释放。等到对应的类被创建的时候再去重新连接。<br>另外在ToggleDevice的方面还没什么好的想法。或者干脆维护一个Device列表？列表内的被Render。这也是需要改进的。</p>
<img src ="http://www.cppblog.com/jiangnan/aggbug/66770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jiangnan/" target="_blank">正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</a> 2008-11-12 22:59 <a href="http://www.cppblog.com/jiangnan/archive/2008/11/12/66770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>11月12日_今天早上意图创建Device和SwapChain。_By Gardon</title><link>http://www.cppblog.com/jiangnan/archive/2008/11/12/66676.html</link><dc:creator>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</dc:creator><author>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</author><pubDate>Wed, 12 Nov 2008 01:11:00 GMT</pubDate><guid>http://www.cppblog.com/jiangnan/archive/2008/11/12/66676.html</guid><wfw:comment>http://www.cppblog.com/jiangnan/comments/66676.html</wfw:comment><comments>http://www.cppblog.com/jiangnan/archive/2008/11/12/66676.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/jiangnan/comments/commentRss/66676.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jiangnan/services/trackbacks/66676.html</trackback:ping><description><![CDATA[<p>今天早上意图创建Device和SwapChain。这没什么问题，但是我意图通过模板演绎和宏来简化对动态链接的DLL中函数的调用时，我写的模板和宏不能正常工作。<br>我写的函数和宏如下：<br>template &lt;typename FuncType&gt;<br>FuncType __forceinline GetModuleFunc(HMODULE hModule, LPCSTR lpProcName, FuncType /*pFunc*/)<br>{<br>&nbsp;return reinterpret_cast&lt;FuncType&gt;(GetProcAddress(hModule, lpProcName));<br>}</p>
<p>#define CallModuleFunc(Module, ProcName, Args)&nbsp;(GetModuleFunc(Module, #ProcName, ProcName))?((GetModuleFunc(Module, #ProcName, ProcName)) Args) : E_FAIL<br></p>
<p>思路是通过函数的声明演绎出函数类型，进行强转然后调用。<br><br>失败原因是尽管没有直接调用pFunc，但pFunc依然作为参数被引用了，因为是动态链接的DLL，没有引用对应的lib，所以链接时提示找不到符号的错误信息。<br><br>想知道有没有什么其他的办法只通过函数声明而不通过引用来获得类型以实现对动态链接的DLL中的函数的调用？vs2005还不支持typeof关键字，暂时没有想到什么好办法。 <br><br>调用方代码大致如下：以CreateDXGIFactory（Direct10里的一个函数） 举例：<br>HRESULT ret = CallModuleFunc(m_hDXGIModule, CreateDXGIFactory, (__uuidof(IDXGIFactory), (void **)&amp;pDXGIFactory) );<br>&nbsp;if (FAILED(ret))<br>&nbsp;{<br>&nbsp;&nbsp;ATLASSERT(0);<br>&nbsp;&nbsp;return E_FAIL;<br>&nbsp;} <br><br>后记：<br>在伟大的叛叛的指导下，用boost搞定了这个问题。<br>一个test程序如下：<br>&nbsp;BOOST_TYPEOF(Direct3DCreate9) *pDirect3DCreate9 = NULL;<br>&nbsp;HMODULE hdx = LoadLibrary(_T("d3d9.dll"));</p>
<p>&nbsp;pDirect3DCreate9 = reinterpret_cast&lt;BOOST_TYPEOF(Direct3DCreate9) *&gt;(GetProcAddress(hdx, "Direct3DCreate9"));<br>&nbsp;if (pDirect3DCreate9 == NULL)<br>&nbsp;{<br>&nbsp;&nbsp;ATLASSERT(0);<br>&nbsp;}<br>&nbsp;else<br>&nbsp;{<br>&nbsp;&nbsp;IDirect3D9 * pD3D = pDirect3DCreate9(D3D_SDK_VERSION);<br>&nbsp;&nbsp;if (pD3D == NULL)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;ATLASSERT(0);<br>&nbsp;&nbsp;}<br>&nbsp;}<br><br>按照这个思路已经可以写出通用的宏了。<br>template &lt;typename FuncType&gt;<br>FuncType __forceinline GetModuleFunc(HMODULE hModule, LPCSTR lpProcName)<br>{<br>&nbsp;FuncType fun = reinterpret_cast&lt;FuncType&gt;(GetProcAddress(hModule, lpProcName));<br>&nbsp;return fun;<br>}</p>
<p>#define CallModuleFunc(Module, ProcName, Args)&nbsp;(GetModuleFunc&lt;BOOST_TYPEOF(ProcName) *&gt;(Module, #ProcName))?((GetModuleFunc&lt;BOOST_TYPEOF(ProcName) *&gt;(Module, #ProcName)) Args) : E_FAIL<br><br>可惜的是boost::typeof的代码我完全看不懂&#8230;&#8230;学习C++的路漫漫其修远兮&#8230;&#8230;</p>
<img src ="http://www.cppblog.com/jiangnan/aggbug/66676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jiangnan/" target="_blank">正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</a> 2008-11-12 09:11 <a href="http://www.cppblog.com/jiangnan/archive/2008/11/12/66676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>11月11日_今天晚间的成果_By Gardon</title><link>http://www.cppblog.com/jiangnan/archive/2008/11/12/66667.html</link><dc:creator>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</dc:creator><author>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</author><pubDate>Tue, 11 Nov 2008 16:51:00 GMT</pubDate><guid>http://www.cppblog.com/jiangnan/archive/2008/11/12/66667.html</guid><wfw:comment>http://www.cppblog.com/jiangnan/comments/66667.html</wfw:comment><comments>http://www.cppblog.com/jiangnan/archive/2008/11/12/66667.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jiangnan/comments/commentRss/66667.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jiangnan/services/trackbacks/66667.html</trackback:ping><description><![CDATA[唉，我每天的业余时间都是被劈成两半的，每一半只有两个小时。<br>今天晚间的成果是：成功的用动态链接调用了DX10的函数，链接失败的情况程序也可以通过返回值给予一定的提示。<br>通过这种方法拿到了IDXGIFactory接口，然后列举了下我的显卡和显示输出，还有在B8G8R8A8显示模式下的所有可用分辨率和刷新率（PS: 我现在是单显卡输出两个显示器的。）<br><br>运行结果：<br>Default graphics library is: Direct3D 10 Library<br>Adapter NVIDIA GeForce 8600M GT&nbsp;&nbsp;&nbsp; :<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VendorId: 4318, DeviceId: 1031, SubSysId: 16321043, Revision: 161<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DedicatedVideoMemory: 241M, DedicatedSystemMemory: 0M, SharedSystemMemor<br>y: 767M<br>Outputs:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \\.\DISPLAY1: 1024 * 768<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Available display mode for B8G8R8A8_UNORM:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 640*480 Refresh rate: 60Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 640*480 Refresh rate: 70Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 640*480 Refresh rate: 72Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 640*480 Refresh rate: 75Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 800*600 Refresh rate: 56Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 800*600 Refresh rate: 60Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 800*600 Refresh rate: 70Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 800*600 Refresh rate: 72Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 800*600 Refresh rate: 75Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024*768 Refresh rate: 60Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024*768 Refresh rate: 70Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024*768 Refresh rate: 72Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024*768 Refresh rate: 75Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \\.\DISPLAY2: 1280 * 800<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Available display mode for B8G8R8A8_UNORM:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 640*480 Refresh rate: 60Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 640*480 Refresh rate: 60Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 800*600 Refresh rate: 60Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 800*600 Refresh rate: 60Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024*768 Refresh rate: 60Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1024*768 Refresh rate: 60Hz<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1280*800 Refresh rate: 60Hz <br><br>目前依然是连窗口和图形界面都没有的-___,-<br>慢慢来，因为这些基础的东西也是很重要的。<br>另外，列举显示卡和显示器的代码暂时没有返回给上层，主要是编码一个枚举类型还是挺耗时间的。暂时用硬编码解决。<br>
<img src ="http://www.cppblog.com/jiangnan/aggbug/66667.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jiangnan/" target="_blank">正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</a> 2008-11-12 00:51 <a href="http://www.cppblog.com/jiangnan/archive/2008/11/12/66667.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>11月11日_通用外部库管理Framework_By Gardon</title><link>http://www.cppblog.com/jiangnan/archive/2008/11/11/66575.html</link><dc:creator>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</dc:creator><author>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</author><pubDate>Tue, 11 Nov 2008 01:27:00 GMT</pubDate><guid>http://www.cppblog.com/jiangnan/archive/2008/11/11/66575.html</guid><wfw:comment>http://www.cppblog.com/jiangnan/comments/66575.html</wfw:comment><comments>http://www.cppblog.com/jiangnan/archive/2008/11/11/66575.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jiangnan/comments/commentRss/66575.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jiangnan/services/trackbacks/66575.html</trackback:ping><description><![CDATA[<p>目的是把DX9、DX10、OpenGL、Software等图形库封装到一个统一的图形接口，把DInput、WINAPI的输入控制封装到一个统一的输入接口，在用户机器上自动选择一个可用的接口使用（譬如Vista默认选择DX10，XP默认选择DX9等）。如果以后有必要，也只需要再定义一个接口，就可以把任何的同功能的多个库封装到一个统一的接口，并获取到一个默认的接口使用。另外，当用户机器上没有可用库的时候，可以&#8220;优雅&#8221;的提示用户，而不是弹出系统默认的&#8220;缺少XXX.DLL，程序无法启动&#8221;。<br>主函数：</p>
<p>#include "stdafx.h"</p>
<p>#include "FWBase.h"</p>
<p>[<br>&nbsp;module (name="TestFramework")<br>];</p>
<p>int _tmain(int argc, _TCHAR* argv[])<br>{<br>&nbsp;InitFramework();<br>&nbsp;CComPtr&lt;IGraphicsLibrary&gt; pGL;<br>&nbsp;if (FAILED(GetDefaultFrameworkLibrary(&amp;pGL)))<br>&nbsp;{<br>&nbsp; wprintf(L"No default graphics library found.");<br>&nbsp; ATLASSERT(0);<br>&nbsp; return 1;<br>&nbsp;}<br>&nbsp;CComBSTR bsGLName;<br>&nbsp;if (SUCCEEDED(pGL-&gt;GetLibraryName(&amp;bsGLName)))<br>&nbsp;{<br>&nbsp; wprintf(L"Default graphics library is: %s", (BSTR)bsGLName);<br>&nbsp;}</p>
<p>&nbsp;return 0;<br>}</p>
<p>接口：</p>
<p>[<br>&nbsp;object,<br>&nbsp;uuid("914F136A-FCC8-4e1b-9E5D-95797B6DE183")<br>]<br>__interface ILibrary : public IDispatch<br>{<br>&nbsp;[id(1), helpstring("Init the library. Return E_FAIL if failed.")]<br>&nbsp;HRESULT InitLibrary();<br>&nbsp;[id(2), helpstring("Retrieves the name of this library")]<br>&nbsp;HRESULT GetLibraryName(BSTR *pbsName);<br>};</p>
<p>[<br>&nbsp;object,<br>&nbsp;uuid("9E979A9A-A271-496f-B04E-7A9AE0BAE335")<br>]<br>__interface IGraphicsLibrary : public ILibrary<br>{<br>&nbsp;&nbsp; //暂时还什么也没写 <br>};</p>
<p><br>Framework接口：<br>HRESULT InitFramework();<br>HRESULT RegisterFrameworkLibrary(REFIID idLibaryType, ILibrary *pLibrary);<br>HRESULT GetDefaultFrameworkLibrary(REFIID idLibraryType, ILibrary **ppLibrary);</p>
<p>template &lt;typename Interface, typename ClassType&gt;<br>HRESULT RegisterFrameworkLibrary();</p>
<p>template &lt;typename LibraryType&gt;<br>HRESULT GetDefaultFrameworkLibrary(LibraryType **ppLibrary);</p>
<p>运行效果：<br>On Vista: <br>Default graphics library is: Direct3D 10 Library<br>On XP: <br>No default graphics library found.<br>（Direct3D 9接口尚未编写）<br></p>
<img src ="http://www.cppblog.com/jiangnan/aggbug/66575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jiangnan/" target="_blank">正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</a> 2008-11-11 09:27 <a href="http://www.cppblog.com/jiangnan/archive/2008/11/11/66575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>11月10日_新来乍到_By Gardon</title><link>http://www.cppblog.com/jiangnan/archive/2008/11/10/66565.html</link><dc:creator>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</dc:creator><author>正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</author><pubDate>Mon, 10 Nov 2008 15:31:00 GMT</pubDate><guid>http://www.cppblog.com/jiangnan/archive/2008/11/10/66565.html</guid><wfw:comment>http://www.cppblog.com/jiangnan/comments/66565.html</wfw:comment><comments>http://www.cppblog.com/jiangnan/archive/2008/11/10/66565.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jiangnan/comments/commentRss/66565.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jiangnan/services/trackbacks/66565.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 咳嗽……那个，大家好……我是新来的……请多多关照……<br>介绍了一下我未来的一段时间的中期计划<br>然后是没有什么可汇报的今天的成果汇报……&nbsp;&nbsp;<a href='http://www.cppblog.com/jiangnan/archive/2008/11/10/66565.html'>阅读全文</a><img src ="http://www.cppblog.com/jiangnan/aggbug/66565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jiangnan/" target="_blank">正牌的天地之灵和他的徒儿们肖赫_王婷婷_王冠_郑燚_孙婷</a> 2008-11-10 23:31 <a href="http://www.cppblog.com/jiangnan/archive/2008/11/10/66565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>