C++博客 :: 首页 :: 联系 ::  :: 管理
  163 Posts :: 4 Stories :: 350 Comments :: 0 Trackbacks

常用链接

留言簿(48)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 397022
  • 排名 - 59

最新评论

阅读排行榜

评论排行榜

#

     摘要: const关键字的用法较为复杂,做一总结便与使用,欢迎高手补充!  阅读全文
posted @ 2008-01-13 21:20 sdfasdf 阅读(14658) | 评论 (7)编辑 收藏

     摘要: 近期准备学习LOD地形设计,这节简单LOD的四叉树算法的原理以及一些需要说明的内容,欢迎此方面的大侠给于指正、交流!  阅读全文
posted @ 2008-01-13 19:45 sdfasdf 阅读(7775) | 评论 (2)编辑 收藏

     摘要:
1、吃自助最高境界:扶墙进,扶墙出。
2、结婚必备条件:有车有房,父母双亡。
3、没有钱,没有权,再不对你好点,你能跟我?   阅读全文
posted @ 2008-01-11 19:52 sdfasdf 阅读(526) | 评论 (3)编辑 收藏

近日读林锐的《高质量C++编程》,作如下学习笔记。
(一)每个类只有一个析构函数和赋值函数,却可以有多个构造函数。
(二)C++编译器会为每个类添加一个无参构造函数,析构函数,赋值函数,拷贝构造函数。
(三)缺省的拷贝函数,和赋值函数采用位拷贝的方式,而不是值拷贝。类中含有指针变量时容易出错。
(四)构造函数的初始化表。必须在派生类的初始化表中调用基类的构造函数,类中const常量也必须在类的初始化列表赋值,类成员的初始化可以在初始化表或者函数体内赋值的方式,这两种方式的效率不完全相同。
(五)构造从类的最根出开始,先调用基类的构造函数,然后调用成员对象的构造函数。析构的顺序与之相反。成员变量的初始化顺序又定义的顺序决定,而不是在初始化列表的顺序决定的。
(六)拷贝构造函数在对象创建时调用,赋值函数只能被已经存在的对象条用。 赋值函数中必须检查是否自赋值。注意不要把
              if(this == &other)      
          写成  (*this == other)
自己不想写这两个函数,又不让别人调用,可以把它们声明为private。
(七)编写派生类的赋值函数,不要忘记对基类的成员重新赋值。Base::Operate=  (other)


posted @ 2008-01-11 19:36 sdfasdf 阅读(1143) | 评论 (0)编辑 收藏

该宏放置一个注释到对象文件或者可执行文件。
#pragma comment( comment-type [,"commentstring"] )

comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。
commentstring是一个提供为comment-type提供附加信息的字符串,
Remarks:
1、compiler:放置编译器的版本或者名字到一个对象文件,该选项是被linker忽略的。
2、exestr:在以后的版本将被取消。
3、lib:放置一个库搜索记录到对象文件中,这个类型应该是和commentstring(指定你要Liner搜索的lib的名称和路径)
这个库的名字放在Object文件的默认库搜索记录的后面,linker搜索这个这个库就像你在命令行输入这个命令一样。你可以
在一个源文件中设置多个库记录,它们在object文件中的顺序和在源文件中的顺序一样。如果默认库和附加库的次序是需要
区别的,使用Z编译开关是防止默认库放到object模块。
4、linker:指定一个连接选项,这样就不用在命令行输入或者在开发环境中设置了。
只有下面的linker选项能被传给Linker.
  • /DEFAULTLIB

  • /EXPORT

  • /INCLUDE

  • /MANIFESTDEPENDENCY

  • /MERGE

  • /SECTION

(1)/DEFAULTLIB:library

/DEFAULTLIB 选项将一个 library 添加到 LINK 在解析引用时搜索的库列表。用 /DEFAULTLIB 指定的库在命令行上指定的库之后和 .obj 文件中指定的默认库之前被搜索。

忽略所有默认库 (/NODEFAULTLIB) 选项重写 /DEFAULTLIB:library。如果在两者中指定了相同的 library 名称,忽略库 (/NODEFAULTLIB:library) 选项将重写 /DEFAULTLIB:library

(2)/EXPORT:entryname[,@ordinal[,NONAME]][,DATA]

使用该选项,可以从程序导出函数,以便其他程序可以调用该函数。也可以导出数据。通常在 DLL 中定义导出。entryname 是调用程序要使用的函数或数据项的名称。ordinal 在导出表中指定范围在 1 至 65,535 的索引;如果没有指定 ordinal,则 LINK 将分配一个。NONAME 关键字只将函数导出为序号,没有 entryname

DATA 关键字指定导出项为数据项。客户程序中的数据项必须用 extern __declspec(dllimport) 来声明。
有三种导出定义的方法,按照建议的使用顺序依次为:

  1. 源代码中的 __declspec(dllexport)

  2. .def 文件中的 EXPORTS 语句

  3. LINK 命令中的 /EXPORT 规范

所有这三种方法可以用在同一个程序中。LINK 在生成包含导出的程序时还创建导入库,除非生成中使用了 .exp 文件。
LINK 使用标识符的修饰形式。编译器在创建 .obj 文件时修饰标识符。如果 entryname 以其未修饰的形式指定给链接器(与其在源代码中一样),则 LINK 将试图匹配该名称。如果无法找到唯一的匹配名称,则 LINK 发出错误信息。当需要将标识符指定给链接器时,请使用 Dumpbin 工具获取该标识符的修饰名形式。

(3)/INCLUDE:symbol

/INCLUDE 选项通知链接器将指定的符号添加到符号表。

若要指定多个符号,请在符号名称之间键入逗号 (,)、分号 (;) 或空格。在命令行上,对每个符号指定一次 /INCLUDE:symbol
链接器通过将包含符号定义的对象添加到程序来解析 symbol。该功能对于添包含不会链接到程序的库对象非常有用。用该选项指定符号将通过 /OPT:REF 重写该符号的移除。



我们经常用到的是#pragma   comment(lib,"*.lib")这类的。
#pragma   comment(lib,"Ws2_32.lib")表示链接Ws2_32.lib这个库。  
和在工程设置里写上链入Ws2_32.lib的效果一样,不过这种方法写的  
程序别人在使用你的代码的时候就不用再设置工程settings了


posted @ 2008-01-10 11:23 sdfasdf 阅读(62547) | 评论 (36)编辑 收藏

宏定义可以提高效率,但是宏不是函数。预编译通过代码复制的方式代替函数调用,省去了诸如函数压栈等系统过程,从而提高了效率。但是由于宏定义仅仅是代码替换,所以引起很多问题。
#define  MAX(a,b)  (a) > (b) ? ( a) : (b)
result=MAX(A,B) +2  编译器对其解释为 (a) > (b) ? (a) : (b)+2 .导致该语句执行与预期不符。
宏定义的另一个缺点就是无法访问类的私有成员。

而内联函数通过把代码直接复制进调用函数体内,避免产生某些系统过程,同样提高了效率,但是内联函数可以进行类型检查,this指针同样能应用,这是宏定义无法比拟的。
内联函数必须是函数的声明和定义一体,且在函数前面加inline。
posted @ 2008-01-09 21:38 sdfasdf 阅读(1462) | 评论 (1)编辑 收藏

glDrawElements是一个OPENGL的图元绘制函数,从数组中获得数据渲染图元。
函数原型为:
void glDrawElements( GLenum mode, GLsizei count,
                   GLenum type, const GLvoid *indices);

                 
其中:
mode指定绘制图元的类型,它应该是下列值之一,GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES,         GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES, GL_QUAD_STRIP, GL_QUADS, and GL_POLYGON.
count为绘制图元的数量。
type为索引值的类型,只能是下列值之一GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT, or GL_UNSIGNED_INT。
indices:指向索引存贮位置的指针。

glDrawElements函数能够通过较少的函数调用绘制多个几何图元,而不是通过OPENGL函数调用来传递每一个顶点,法线,颜色信息。你可以事先准备一系列分离的顶点、法线、颜色数组,并且调用一次glDrawElements把这些数组定义成一个图元序列。当调用glDrawElements函数的时候,它将通过索引使用count个成序列的元素来创建一系列的几何图元。mode指定待创建的图元类型和数组元素如何如来创建这些图元。但是如果GL_VERTEX_ARRAY 没有被激活的话,不能生成任何图元。被glDrawElements修改的顶点属性在glDrawElements调用返回后的值具有不确定性,例如,GL_COLOR_ARRAY被激活后,当glDrawElements执行完成时,当前的颜色值是没有指定的。没有被修改的属性值保持不变。
可以在显示列表中包含glDrawElements,当glDrawElements被包含进显示列表时,相应的顶点、法线、颜色数组数据也得进入显示列表的,因为那些数组指针是ClientSideState的变量,在显示列表创建的时候而不是在显示列表执行的时候,这些数组指针的值影响显示列表。glDrawElements只能用在OPENGL1.1或者更高的版本。



posted @ 2008-01-08 10:29 sdfasdf 阅读(9017) | 评论 (0)编辑 收藏

Effective C++ 中文版,学习C++的手册!请随意下载!如果愿意,交个朋友。
posted @ 2008-01-07 20:11 sdfasdf 阅读(8987) | 评论 (56)编辑 收藏

     摘要: 使用鼠标旋转物体,很简单也有很多实现方法,这里我们教会你模拟轨迹球来实现它.
  阅读全文
posted @ 2008-01-07 16:25 sdfasdf 阅读(3805) | 评论 (4)编辑 收藏

     摘要: nVidio的面向GPU的C语言,如果你相信它就好好学学吧,同样这里也只是个入门。记住,类似的语言还有微软的HLSL,OpenGL的GLSL,ATI的shaderMonker。不要选错哦:)
  阅读全文
posted @ 2008-01-07 16:24 sdfasdf 阅读(1368) | 评论 (0)编辑 收藏

     摘要: 当今显卡的强大功能,你几乎什么都不用做,只需要在创建窗口的时候该一个数据。看看吧,驱动程序为你做完了一切。
  阅读全文
posted @ 2008-01-07 16:21 sdfasdf 阅读(2213) | 评论 (0)编辑 收藏

     摘要: C++基础内容!当年萧峰凭借最基本的入门武功--太祖长拳来拆解游坦之的易筋经,凭的是对武学的深刻理解,他已经把武术融会贯通,所以能以天下至简的功夫对天下至深奥的功夫,指针也是类似的,C++的最基本内容!学好它还真不容易。  阅读全文
posted @ 2008-01-06 15:59 sdfasdf 阅读(250) | 评论 (0)编辑 收藏

     摘要: 彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则   阅读全文
posted @ 2008-01-06 15:53 sdfasdf 阅读(529) | 评论 (0)编辑 收藏

      转眼间,我硕士阶段的学习生涯马上就要结束了;回首之间,感觉时间真如白驹过隙,期间总是步履匆匆,好歹这几年没算全部浪费,收获不能说一点没有,但要说收获颇丰,也是掩耳盗铃。这期间,我做到了使自己满负荷地运转,但是我的学校计算机实力实在是太弱了,总感觉收获的和自己付出的不怎么成比例。在这里,我有几点经验以飨来者。

一、尽量不到垃圾学校读研,除非你只是想拿个硕士证,但是一张文凭吃遍天下的时代早就过去了。读硕士就要在一个该专业实力较强的学校读,最好是名校,千万别为了保险起见,填报垃圾学校,否则你的硕士阶段就白白度过。如果实在是能力有限,调剂到垃圾学校,那是没有办法的事情!在名校读书,老师课题相对来说有保证,找工作机会多。

二、尽量学好你自己的专业,不能这山看着那山高,更换专业,这往往会降低你成功的机会。记得有人说过“在这个世界上,不是你想得到什么,而是你能得到什么”。学好你自己的专业,兢兢业业在该领域内耕耘几年,你也会是大腕。前几年我国有个生物学家陈化兰,她的本科专业是兽医,当时她自己都不好意思对别人说她的专业,但是她一直就在这个领域耕耘,后来发明禽流感疫苗,名震华夏。

三、处理好和导师的关系,因个性太强或是太执着自己的东西而和导师搞得关系僵硬的人,往往吃亏的是学生。

四、如果你想毕业后直接工作,那么认真学好基础课吧,计算机专业的找工作笔试题几乎全部是本科阶段学的内容,像数据结构,c语言,java,数据库,操作系统,网络等等。研究生阶段的课程几乎没有涉及到。

五、如果你想考博,我建议你考中科院。尽管有些学校也很好,但是中科院的培养机制是其他大学不可比拟的,老师的课题很多,只你要愿意干,肯定够你干的。中科院以后出国的机会、科研条件也是其他大学无法比的,再就是现在博士基本自费,而中科院现在硕士、博士全部公费,每月还有不菲的收入,这对一般工薪家庭来说是一个重要参考指标。

六、如果你导师的项目组不是很正规,我建议还是到大一些的公司实习对你的帮助更大,给老师做的项目很多开发过程不是很正规,流程也不完善,对你的帮助可能不是很大。能去实习尽量去实习吧!

以上是我的一点经验总结,不同意的朋友千万别仍鸡蛋
posted @ 2008-01-05 20:51 sdfasdf 阅读(3533) | 评论 (10)编辑 收藏

     摘要: 你想更快地绘制么?直接操作显卡吧,这可是当前的图形技术,不要犹豫,我带你入门。接下来,你自己向前走吧
  阅读全文
posted @ 2008-01-05 19:36 sdfasdf 阅读(1751) | 评论 (0)编辑 收藏

     摘要: 当镜头对准太阳的时候就会出现这种效果,模拟它非常的简单,一点数学和纹理贴图就够了。好好看看吧。
  阅读全文
posted @ 2008-01-05 19:33 sdfasdf 阅读(2325) | 评论 (0)编辑 收藏

     摘要: 使用FreeType库可以创建非常好看的反走样的字体,记住暴雪公司就是使用这个库的,就是那个做魔兽世界的。尝试一下吧,我只告诉你了基本的使用方式,你可以走的更远  阅读全文
posted @ 2008-01-04 21:31 sdfasdf 阅读(5598) | 评论 (0)编辑 收藏

     摘要: 画中画效果,很酷吧。使用视口它变得很简单,但渲染四次可会大大降低你的显示速度哦  阅读全文
posted @ 2008-01-04 21:22 sdfasdf 阅读(2858) | 评论 (0)编辑 收藏

     摘要: 把雾坐标绑定到顶点,你可以在雾中漫游,体验一下吧  阅读全文
posted @ 2008-01-04 21:18 sdfasdf 阅读(1763) | 评论 (0)编辑 收藏

 

向量是3D数学的基础,可以说几乎所有3D数学是以向量运算为基础的!简言之,向量就是既有大小、又有方向的物理量。 设有向量V (Vx,Vy),U(Ux,Uy),W(Wx,Wy)。

 

一、向量相加: V=U+W  => Vx = Ux + Wx , Uy = Uy + Wy.

二、向量相减: V=U-W  => Vx = Ux - Wx , Uy = Uy - Wy

三、向量与标量相乘:R*U=(R*Ux , R*Uy)。

四、向量的长度:||U||=sqrt(Ux*Ux+Uy*Uy)

五、向量的点积:U*V=(Ux*Vx + Uy*Vy)= cos(a)*||U||*||V||.

六、向量的叉积:||UV||=sin(a)*||U||*||V||。




posted @ 2008-01-04 20:15 sdfasdf 阅读(1718) | 评论 (0)编辑 收藏

仅列出标题
共9页: 1 2 3 4 5 6 7 8 9