- 博客(182)
- 资源 (5899)
- 收藏
- 关注
原创 最好的 VC++/MFC 开源软件项目
<br />原文:http://www.codeproject.com/useritems/OpenSource_VC_MFC.asp<br /><br /><br />Codeproject has the best source code repository for VC++ developers. But another site Sourceforge.net also have some of the best quality projects available for VC++. Here
2010-07-31 16:58:00 3608
原创 许多VC++/MFC构架的开源项目
Introduction<br />List of some of the best Open Source projects written in VC++/MFC. Background<br /> Codeproject has the best source code repository for VC++ developers. But another site Sourceforge.net also have some of the best quality projects
2010-07-31 16:56:00 3249
原创 MFC类库列举
<br />根类<br />CObject<br />CRuntimeClass<br />应用和线程:<br />CWinApp<br />CWinThread<br />ISAPI应用类<br />CHttpFilter<br />CHttpServer<br />同步对象类<br />CSyncObject<br />CCriticalSection<br />CSempaphone<br />CMutex<br />CEvent<br />CSingleLock<br />CMultiLock<br
2010-07-30 22:44:00 2706 5
原创 DSP入门看
<br />DSP入门必看<br /> 如何选择外部时钟? DSP的内部指令周期较高,外部晶振的主频不够,因此DSP大多数片内均有PLL。但每个系列不尽相同。 <br />1)TMS320C2000系列: <br />TMS320C20x:PLL可以÷2,×1,×2和×4,因此外部时钟可以为5MHz-40MHz。 <br />TMS320F240:PLL可以÷2,×1,×1.5,×2,×2.5,×3,×4,×4.5,×5和×9,因此外部时钟可以为2.22MHz-40MHz。 TMS320F241/C
2010-07-30 22:29:00 2259 1
原创 FormatMessage VC函数
<br />void DisplayError(DWORD dwError) <br />{ <br /> LPVOID pv; <br /> FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER| <br /> FORMAT_MESSAGE_FROM_SYSTEM, <br /> NULL, <br /> dwError, <br /> MAKELANGID(LANG_NEU
2010-07-30 15:06:00 2243
原创 单片机应用编程技巧
<br />单片机应用编程技巧<br />作者:Holtek---邓宏杰<br /><br />1. C语言和汇编语言在开发单片机时各有哪些优缺点?<br />答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。<br /><br />C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。<br /><br
2010-07-30 14:48:00 4260 1
转载 一些网站
转自 http://blog.sina.com.cn/s/blog_4062094e01008tc0.html一些大概有价值的网站,需要进一步的补充和甄别。终于发现把有用的网站放到收藏夹里也不可靠了,总是丢,也疏于整理。现在在http://www.gamedev.org/forum/index.php?topic=2142.0的基础上把一些有价值的网站记录下来。 Programming:http://www.blitzbasic.com/http://msdn.microsoft.com/library/d
2010-07-29 09:45:00 3170
转载 用OpenInventor实现的NeHe OpenGL教程-第四十八课
<br />用OpenInventor实现的NeHe OpenGL教程-第四十八课 <br />NeHe教程在这节课向我们介绍了轨迹球技术。轨迹球技术可以让用户使用鼠标直接旋转物体,这是所有交互式3D软件必须提供的最基本的功能。NeHe教程提供的方法是在其它人的基础上做了一些修改和优化。但他的方法仍然有一些小的错误,例如,在将鼠标2D坐标位置映射到3D球体上时,他没有考虑透视因素,因此可能会稍微有些误差,不过对于一般应用来说已经足够用了。<br /> <br /> Open Inve
2010-07-29 09:39:00 1749
转载 用OpenInventor实现的NeHe OpenGL教程-第四十六课
<br /> 用OpenInventor实现的NeHe OpenGL教程-第四十六课 NeHe教程在这节课向我们介绍了OpenGL的扩展(ARB_MULTISAMPLE)多重采样技术。利用这种技术可以实现全屏反走样。这样可以使图形看起来更美观。 OpenInventor自动支持反走样技术。关键的函数是SoWinRenderArea::setAntialiasin() ,它可以启动全屏反走样,OpenInventor是通过多次绘制同一个场景来实现反走样。 现在编译运行我们程序,屏幕会显示多个不断旋
2010-07-29 09:38:00 1606
转载 用OpenInventor实现的NeHe OpenGL教程-第四十七课
<br />用OpenInventor实现的NeHe OpenGL教程-第四十七课 NeHe教程在这节课向我们介绍了Cg编程技术。Gg是nVidio公司面向GPU的语言,类似的语言还有微软的HLSL,OpenGL的GLSL,ATI的shaderMonker。使用着色器(Shader)的最大的好处就是把CPU的一些工作交给了GPU。 Coin支持OpenGL的GLSL着色器,同时也支持ARB Shaders和Cg Shaders。但目前对OpenGL的GLSL支持的最好。读者可以阅读文档( htt
2010-07-29 09:38:00 1735
转载 用OpenInventor实现的NeHe OpenGL教程-第四十三课
<br />用OpenInventor实现的NeHe OpenGL教程-第四十三课 NeHe教程在这节课向我们介绍了如何使用FreeType库创建反走样字体的技术。反走样字体可以让文本看上去更漂亮。“魔兽世界”中使用的字体库就是FreeType库。直接使用FreeType库还是比较麻烦的。但对于使用Coin3D的用户来说,有一个非常好的消息,Coin3D内部自动支持FreeType库,只要将FreeType.dll拷贝到程序所在目录下,Coin就会自动加载FreeType,很酷吧 ^_^。 在C
2010-07-29 09:37:00 1755
转载 用OpenInventor实现的NeHe OpenGL教程-第四十四课
<br />用OpenInventor实现的NeHe OpenGL教程-第四十四课 NeHe教程在这节课向我们介绍了3D光晕的技术。当摄像机镜头对准太阳的时候就会出现这种效果,这种技术经常用在游戏场景中。为了完成这种效果,我们需要一些数学知识,用来检测某个点或球是否在当前的视景体内。我们还需要一些纹理作为我们的光晕效果。 程序中关键的函数有:BOOL glCamera::SphereInFrustum(SbVec3f p, float Radius){ int i; for(i
2010-07-29 09:37:00 1839
转载 用OpenInventor实现的NeHe OpenGL教程-第四十五课
<br />用OpenInventor实现的NeHe OpenGL教程-第四十五课 NeHe教程在这节课向我们介绍了OpenGL新的扩展“顶点缓存”(VBO),这种技术可以直接操作显卡,直接把顶点数据放置在显卡中的高速缓存中,极大的增加了OpenGL的绘制速度。对于使用Coin3D的用户来说,有一个非常好的消息,Coin3D内部自动支持VBO。当我们使用SoIndexedFaceSet节点显示三角面时,Coin在内部缺省情况下就是使用VBO来显示的。因此VBO技术我们已经很早就在使用了。 下面的函
2010-07-29 09:37:00 1654
转载 用OpenInventor实现的NeHe OpenGL教程-第四十一课
<br />用OpenInventor实现的NeHe OpenGL教程-第四十一课 NeHe教程在这节课向我们介绍了体积雾气特效,这是一种比较新的特效,你的显卡必须支持扩展"GL_EXT_fot_coord"函数。这个特效可以使人产生在雾中漫游的感觉。 OpenInventor目前还不支持体积雾气特效,虽然我们仍然可以按照前面课程的思路,通过创建SoCallback节点来直接调用OpenGL。但在这节课中我打算使用另外的一种方法来调用OpenGL命令。OpenInventor号称是面向对象的图像库,所以
2010-07-29 09:36:00 1373
转载 用OpenInventor实现的NeHe OpenGL教程-第四十二课
<br />用OpenInventor实现的NeHe OpenGL教程-第四十二课 NeHe教程在这节课向我们介绍了多重视口效果。它是通过向四个视口渲染四次的方式来实现这样的效果的。在OpenInventor中可以允许创建多个Viewer,因此我们通过创建四个SoWinExaminerViewer,就可以简单地实现相同的效果了。至于创建迷宫的代码,和我们的讨论没有太大的关系,我们是直接拷贝NeHe的代码,这里就不在详细说明了。 本课的完整代码 下载。(VC 2003 + Coin2.5) 后记
2010-07-29 09:36:00 1596
转载 用OpenInventor实现的NeHe OpenGL教程-第三十九课
<br /> 用OpenInventor实现的NeHe OpenGL教程-第三十九课 NeHe教程在这节课向我们介绍了如何进行物理模拟计算。这节课的内容主要是和物理、数学有关系,和图形图像的关系不大。我们的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完整代码 下载。(VC 2003 + Coin2.5) 后记OpenInventor是一种基于OpenGL的面向对象的三维图形软件开发包。使用这个开发包,程序员可以快速、简洁地开发出各种类型的交互式三维图形软件。这里不对Op
2010-07-29 09:35:00 1305
转载 用OpenInventor实现的NeHe OpenGL教程-第四十课
<br />用OpenInventor实现的NeHe OpenGL教程-第四十课 NeHe教程在这节课向我们介绍了如何模拟一根绳子的运动状态,简单的说,就是把绳子先离散化,把它想象成一个个紧密排列的点,每两个点之间有弹性约束。其实这就是简单的有限元思想。这节课的内容和上节课一样,主要是和物理、数学有关系,和图形图像的关系不大。我们的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完整代码 下载。(VC 2003 + Coin2.5) 后记OpenInventor是一种基于OpenG
2010-07-29 09:35:00 1373
转载 用OpenInventor实现的NeHe OpenGL教程-第三十七课
<br />用OpenInventor实现的NeHe OpenGL教程-第三十七课 NeHe教程在这节课向我们展示了卡通效果。卡通效果就是在物体轮廓边上加少量的颜色。可以使用OpenGL的一维纹理映射功能来实现此效果。这里需要注意的是,OpenInventor没有提供一维纹理,但我们可以使用2维纹理来模拟,我们只需要将2维纹理的行数设置为1就可以了,具体请阅读代码。其他的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完整代码 下载。(VC 2003 + Coin2.5) 后
2010-07-29 09:34:00 1276
转载 用OpenInventor实现的NeHe OpenGL教程-第三十八课
<br />用OpenInventor实现的NeHe OpenGL教程-第三十八课 NeHe教程在这节课向我们介绍了如何从资源文件中载入图像。这节课的内容比较简单,只需要注意的是,Bitmap文件中每个像素颜色保存的顺序是BGR,我们应该将其转换成RGB,以便适应OpenInventor纹理节点的要求。其他的代码基本上和NeHe代码的原理类似,这里就不再详细说明了。 本课的完整代码 下载。(VC 2003 + Coin2.5) 后记OpenInventor是一种基于OpenGL的面向对象的三维
2010-07-29 09:34:00 1311
转载 用OpenInventor实现的NeHe OpenGL教程-第三十五课
<br />用OpenInventor实现的NeHe OpenGL教程-第三十五课 这是一节令人激动的课程。NeHe教程在这节课向我们介绍了如何在OpenGL中播放AVI文件。说来惭愧,作为一名程序员,多年来看过无数AVI格式的A片(American片,不要想歪了。^_^),但却从来没有想过如何解码AVI文件。在这个教程中我们终于有机会了解如何操作AVI文件了。当然我们不是想开发一款类似“暴风影音”那样的软件,我们只是利用微软提供的流媒体接口来操作AVI文件。 其实OpenInventor已经支持
2010-07-29 09:33:00 1375
转载 用OpenInventor实现的NeHe OpenGL教程-第三十六课
<br />用OpenInventor实现的NeHe OpenGL教程-第三十六课 NeHe教程在这节课向我们展示了放射模糊的效果。通过把渲染得图像作为纹理提取出来,在利用OpenGL本身自带的纹理过滤,就能实现这种效果。这是一节比较高级的课程。OpenInventor没有提供纹理过滤的功能,所以我们只能通过直接调用OpenGL来实现此课程。在程序中我们第一次使用了SoOffscreenRenderer节点,这个节点可以在内存中渲染某个场景,然后我们将内存中的场景图像作为纹理数据,这样就实现了Ne
2010-07-29 09:33:00 1229
转载 用OpenInventor实现的NeHe OpenGL教程-第三十四课
<br /> 用OpenInventor实现的NeHe OpenGL教程-第三十四课 NeHe教程在这节课向我们介绍了如何从一个2D的灰度图创建地形。这节课的内容比较简单,只是从一个2D灰度图中读取灰度数据,然后将灰度数据转换成高度数据,最后将这些数据显示出来就可以了。 首先定义一些全局变量,这些变量的含义和NeHe教程完全一致#define MAP_SIZE 1024 // Size Of Our .RAW Height Map (NEW)#define STEP
2010-07-29 09:32:00 1963
转载 用OpenInventor实现的NeHe OpenGL教程-第三十二课
用OpenInventor实现的NeHe OpenGL教程-第三十二课 <br /> <br /> <br />NeHe教程在这节课展示的是一个游戏程序,里面包括的技术有OpenGL拾取, Alpha混合, Alpha测试, 排序。这是目前位置NeHe教程中代码量最大的一节课了。<br /> <br />这节课我们不打算使用OpenGL的方法来拾取物体,我们将利用OpenInventor提供给我们的更加方便的拾取功能来完成这个同样的游戏程序。OpenInventor比OpenGL最大的优势就在于交互式操作
2010-07-29 09:30:00 1362
转载 用OpenInventor实现的NeHe OpenGL教程-第三十三课
<br /> 用OpenInventor实现的NeHe OpenGL教程-第三十三课 NeHe教程在这节课向我们介绍了如何加载压缩和非压缩类型的TGA文件。OpenInventor已经直接支持将TGA文件(压缩和非压缩类型)作为纹理文件,所以我们不必像NeHe教程那样分析TGA文件的数据格式。 下面的函数用来加载非压缩类型的TGA文件作为纹理SoSeparator* BuildpUncompSep(void){ SoSeparator *pUncompSep = new SoSeparat
2010-07-29 09:30:00 1294
转载 用OpenInventor实现的NeHe OpenGL教程-第三十一课
用OpenInventor实现的NeHe OpenGL教程-第三十一课<br /> <br /> <br /> <br />NeHe教程在这节课中介绍了如何加载Milkshape3D建模软件所设计的模型文件。这节课的内容与OpenGL、OpenInventor的关系不大,主要是分析Milkshape3D的模型文件格式。我们程序中读取Milkshape3D模型文件的代码都是拷贝自NeHe教程,唯一不同的就是如何根据模型顶点数据来创建场景。如果您看过我们以前的例子,那么理解本课的代码将是一件很容易的
2010-07-29 09:29:00 1294
转载 用OpenInventor实现的NeHe OpenGL教程-第三十课
用OpenInventor实现的NeHe OpenGL教程-第三十课<br /> <br /> <br /> <br />NeHe教程在这节课介绍了碰撞检测。碰撞检测是一种比较复杂的技术。NeHe教程只是检测平面、球体、圆柱体等这些规则物体之间的碰撞检测。OpenInventor提供了任意形状物体之间的碰撞检测,当然这样的碰撞检测需要更多的计算时间。<br /> <br />碰撞检测的算法在NeHe的教程中已经做了详尽的解释,我们就不再赘述了。程序的主干部分就是碰撞检测的算法实现,你可以从源代码
2010-07-29 09:28:00 1273
转载 用OpenInventor实现的NeHe OpenGL教程-第二十九课
用OpenInventor实现的NeHe OpenGL教程-第二十九课<br /> <br /> <br /> <br />NeHe教程在这节课中介绍了如何把一块纹理贴到另一块纹理上(即多重纹理)。这节课的内容不是很难,主要是如何读取raw数据格式文件,如何计算图像的透明度等。<br /> <br />OpenInventor对多重纹理直接提供支持,所以我们也可以利用多重纹理来实现相同的效果。具体的代码见BuildCube2<br /> <br /> <br /> 下面定义的是raw
2010-07-29 09:27:00 1475
转载 用OpenInventor实现的NeHe OpenGL教程-第二十八课
用OpenInventor实现的NeHe OpenGL教程-第二十八课<br /> <br /> <br /> <br />NeHe教程在这节课中向我们介绍了贝塞尔曲面,贝塞尔曲面是一种可以只使用很少的参数就可以描述出复杂曲面的一种数学工具。对于使用OpenInventor的程序员来说,创建贝塞尔曲面是非常容易的事情,OpenInventor已经对贝塞尔曲面,Nurbs曲面等都做了相应的支持。<br /> <br /> <br />首先定义一些程序中使用的全局变量:<br />SoRotatio
2010-07-29 09:26:00 1606
转载 用OpenInventor实现的NeHe OpenGL教程-第二十七课
用OpenInventor实现的NeHe OpenGL教程-第二十七课<br /> <br /> <br /> <br />NeHe教程在这节课中向我们介绍了如何在场景中创建阴影效果,这是一个高级的主题,请确信你已经熟练的掌握了基本的OpenGL命令,并熟悉蒙板缓存。<br /> <br />NeHe教程中介绍的阴影效果俗称蒙板阴影。这种计算阴影的技术最大的优点是速度比较快,不需要什么高级的显卡就可以达到非常好的效果。而且阴影的效果和场景中的物体数目、复杂度基本上没有关系(为了验证这点,我稍微修
2010-07-29 09:25:00 1358
转载 用OpenInventor实现的NeHe OpenGL教程-第二十六课
用OpenInventor实现的NeHe OpenGL教程-第二十六课<br /> <br /> <br /> <br />NeHe教程在这节课中向我们介绍了如何创建镜面显示效果,它使用剪裁平面,蒙板缓存等OpenGL中一些高级的技巧。<br /> <br />在OpenInventor中已经提供了剪裁面节点SoClipPlane。但蒙板缓存目前还没有直接支持,所以我们只能通过调用OpenGL的方式来实现蒙板缓存。这篇教程所讲述的技术比较高级,读者应该首先了解清楚蒙板缓存的功能。下面我们仍然在代
2010-07-29 09:23:00 1496
转载 用OpenInventor实现的NeHe OpenGL教程-第二十五课
用OpenInventor实现的NeHe OpenGL教程-第二十五课<br /> <br /> <br />NeHe教程在这节课中向我们介绍了如何从文件加载3D模型,并且平滑的从一个模型变换为另一个模型。两个模型之间平滑过渡的算法其实是很简单的,首先我们要保证两个模型要有相同数目的顶点,然后我们分别计算每个点从一个模型移动到另外一个模型时,中间的位置数据。我们将这个过程显示出来就会产生模型平滑过渡的效果。<br /> <br />因为我们的程序采用NeHe提供的3D模型数据,所以我们就直接使用
2010-07-29 09:22:00 1504
转载 用OpenInventor实现的NeHe OpenGL教程-第二十四课
用OpenInventor实现的NeHe OpenGL教程-第二十四课 NeHe教程在这节课中向我们介绍了如何读取显卡支持的OpenGL的扩展,如何使用Targa(TGA)图像文件作为纹理,以及如何利用OpenGL的剪裁区域来滚动屏幕文字。 在OpenInventor中没有相关的函数来获取OpenGL的扩展信息,我们只能通过直接调用OpenGL来获得这些信息。OpenInventor的纹理节点自动支持使用Targa(TGA)图像文件作为纹理,所以我们不必像NeHe教程中那样
2010-07-29 09:18:00 1351
转载 用OpenInventor实现的NeHe OpenGL教程-第二十三课
用OpenInventor实现的NeHe OpenGL教程-第二十三课<br /> <br /> <br />这节课我们将学习使用环境纹理映射。这种映射方式可以让物体表面看上去像镜子一样反射周围的环境。这节课的代码是在前面第十八节课程的基础上修改的。阅读NeHe教程我们可以发现,利用OpenGL显示环境纹理是比较容易的,同样在OpenInventor中使用环境纹理也是非常的简单。我们只需要创建一个SoTextureCoordinateEnvironment节点就可以了。<br /> <br />
2010-07-29 09:16:00 1335
转载 用OpenInventor实现的NeHe OpenGL教程-第二十二课
用OpenInventor实现的NeHe OpenGL教程-第二十一课这节课从技术上来说没有提供什么新技术,都是前面几节课的内容。但这节课提供了一个编写比较完整的OpenGL小游戏的例子。程序逻辑基本上和NeHe一样。代码有些复杂。这里就不再详细说明了。各位看代码吧。^_^本课的完整代码下载。(VC 2003 + Coin2.5)后记OpenInventor是一种基于OpenGL的面向对象的三维图形软件开发包。使用这个开发包,程序员可以快速、简洁地开发出各种类型的交互式三维图形软件。这里不对OpenInve
2010-07-29 09:15:00 1484
转载 用OpenInventor实现的NeHe OpenGL教程-第二十一课
用OpenInventor实现的NeHe OpenGL教程-第二十二课这节课我们将讨论凹凸纹理技术。使用凹凸纹理可以让物体表面更有质感。正如NeHe教程中所说的,这是一节高级课程,请确信你对基本知识已经非常了解。我们对NeHe教程阅读后可以发现,利用OpenGL显示凹凸纹理是比较困难的。首先需要使用OpenGL的多重纹理扩展,其次还要了解凹凸纹理的计算方法。我估计很多程序员都搞不清楚凹凸纹理的计算方法(包括我自己在内。呜呜!尤其是“切空间”的含义是什么,如果那位读者明白的话,请不吝赐教。^_^)。不过,如果
2010-07-29 09:15:00 1342
转载 用OpenInventor实现的NeHe OpenGL教程-第二十课
用OpenInventor实现的NeHe OpenGL教程-第二十课<br /> <br /> <br /> <br />这节课我们将讨论蒙板技术。所谓蒙板技术可能很多人在2D绘图程序中已经使用过了。例如,我们希望在背景图片上绘制一个人物(精灵)。因为人物的图片是矩形的,而人物本身又是不规则图形,所以矩形图片中会有一些空白的部分。如果我们不将这些空白的部分去掉,直接绘制人物图片的话,程序的效果肯定会很差。这时我们就需要使用蒙板技术了,首先要产生一个和人物图片一样的黑白掩码图片,然后先让这幅黑白掩
2010-07-29 09:13:00 1359
转载 用OpenInventor实现的NeHe OpenGL教程-第十九课
用OpenInventor实现的NeHe OpenGL教程-第十九课<br /> <br /> <br /> <br />这节课我们将讨论怎样使用OpenInventor实现一个简单的粒子系统。我们在NeHe教程中可以看到,一个简单的粒子系统实现起来不像想象中那样的困难。只要能计算好一个粒子的当前状态(速度,加速度,颜色),就很容易完成一个粒子系统的效果。<br /> <br /> NeHe教程中使用三角形带来显示每个粒子(GL_TRIANGLE_STRIP),OpenInvento
2010-07-29 09:11:00 1552
转载 用OpenInventor实现的NeHe OpenGL教程-第十八课
用OpenInventor实现的NeHe OpenGL教程-第十八课<br /> <br /> <br /> <br />这节课我们将在前面讲述的第七节课程的基础上,显示球体,圆柱体,圆锥体等二次几何体。<br /> <br /> 下面的代码是在第七节课程的基础上增加或修改的代码。先定义一些全局变量。<br />SoSwitch* g_pSceneSwitch = NULL;//用来切换不同的二次几何体<br /> <br /> 和以前的代码一样
2010-07-29 09:10:00 1503
转载 用OpenInventor实现的NeHe OpenGL教程-第十七课
用OpenInventor实现的NeHe OpenGL教程-第十七课<br /> <br /> <br /> <br />这节课我们将讨论使用纹理贴图的技术来显示文字。使用这种技术显示文字的好处在于程序的效果在任何机器上都是相同的。而我们前面讨论的显示文字的方法都是依赖于当前系统中所包含的字体,所以前面讨论的技术在不同的机器上有可能会有不同的显示效果。<br /> <br />使用纹理贴图来显示文字的原理很简单,首先需要制作一个包含所有需要显示的文字的图片,将这个图片作为纹理加载到内存中,然后根
2010-07-29 09:08:00 1613
转载 用OpenInventor实现的NeHe OpenGL教程-第十六课
用OpenInventor实现的NeHe OpenGL教程-第十六课<br /> <br /> <br /> <br />这节课我们将在前面讲述的第七节课程的基础上,对场景增加上“雾 ”的效果。在OpenInventor中添加“雾 ”效果还是很容易的。OpenInventor提供了一个叫做SoEnvironment的节点类,通过这个节点类,我们就可以实现“雾 ”的效果。<br /> <br /> 下面的代码是在第七节课程的基础上增加或修改的代码。先定义一些全局变量。<br />SoE
2010-07-29 09:07:00 1294
qt-win-noncommercial-msvc-3.2.1
2014-09-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人