- 博客(27)
- 收藏
- 关注
原创 ogre中的材质脚本
资源组管理器初始化完毕时,装载材质脚本,OGRE会自动的在组相关的资源位置查找".materal”扩展名的文件,并对这些脚本进行语法解析。手动解析可以通过MaterialSerializer::parseScript()。但是注意的是:解析脚本时并没有对脚本中定义的全部纹理等资源进行加载,所以,在我们访问一个材质的时候,一定要确保它已经装载,或者,我们手动将此材质Load()一次再进行访
2009-10-22 22:46:00 2082 1
原创 ogre中的资源
比如下面的代码: mSceneMgr->setSkyDome(true, "Examples/CloudySky", 5, 8); // Create shared node for 2 fountains mFountainNode = static_cast(mSceneMgr->getRootSceneNode()-
2009-10-22 16:01:00 756
原创 c++类型转化的比较
== ============================================= dynamic_cast .vs. static_cast == ===========================================class B { ... }; class D : public B { ... }; void f(B* pb) {
2009-10-20 21:19:00 608
原创 c++中类型转化
C 风格(C-style)强制转型如下: (T) exdivssion // 把exdivssion转化为T类型比如: int a = (int)3.2; 函数风格(Function-style)强制转型使用这样的语法: T(exdivssion) // cast exdivssion to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一
2009-10-20 20:59:00 515
原创 ogre中显式写入日志文件
LogManager::getSingletonPtr()->logMessage("*** Initializing OIS ***"); 这句代码会把*** Intiializing OIS ****写入到ogre.log中。
2009-10-20 20:41:00 592
原创 ogre中显示FPS框
用向导生成的程序,默认显示FPS框,而且屏幕右边有个Ogre的图片,我自己比较讨厌这个图片~~~ 那如何控制是否显示这些信息呢? 在ogre中,这些信息放在Media/packs/OgreCore.zip中的OgreDebugPanel.overlay中, 在帧侦听器中,通过mDebugOverlay = OverlayManager::getSingleton().g
2009-10-20 20:21:00 2373
原创 ogre中设置纹理滤波方式
ogre中设置滤波方式的代码: if( mKeyboard->isKeyDown(OIS::KC_T) && mTimeUntilNextToggle <= 0 ) { switch(mFiltering) { case TFO_BILINEAR: mFiltering = TFO_TRILINEAR; mAniso = 1;
2009-10-20 20:06:00 1005
原创 关于纹理滤波方式
1、 为什么在纹理采样时需要texture filter 我们的纹理是要贴到三维图形表面的,而三维图形上的pixel中心和纹理上的texel中心并不一至(pixel不一定对应texture上的采样中心texel),大小也不一定一至。当纹理大于三维图形表面时,导至一个像素被映射到许多纹理像素上;当维理小于三维图形表面时,许多个象素都映射到同一纹理。 当这些情况发生时,贴图
2009-10-20 20:00:00 1621
原创 ogre中截屏方法
截取渲染场景放在图形文件中,主要是通过窗口的方法实现的,下面为实现代码: std::ostringstream ss; ss << "screenshot_" << ++mNumScreenShots << ".png"; mWindow->writeContentsToFile(ss.str()); mTimeUntilNextToggle = 0.5;
2009-10-20 19:45:00 1063 1
原创 ogre中获取摄像机位置和方位
ogre中获取摄像机位置和方位方法如下:位置信息应该是世界坐标系中的三维坐标,方位信息是单位化的方向向量。 mDebugText = "P: " + StringConverter::toString(mCamera->getDerivedPosition()) + " " + "O: " + StringConverter::toString(mCamera->
2009-10-20 19:42:00 872
原创 ogre中显示模型线框
ogre中,显示三维物体可以有实体(solid)方式,线框(wireframe),以及点(point)方式,...原来是通过摄像机相关方法设置的: case 0 : mCamera->setPolygonMode(PM_SOLID); break; case 1 : mCamera->setPolygonMode(PM_WIREFRAME); break; cas
2009-10-20 19:35:00 1683 1
原创 c++面试题目(1)
如果int a= 5, b=3; 执行语句"!a&&b++"后,a、b的值分别为: A. 5, 3 B. 0, 1 C. 0, 3 D. 5, 4 答案是什么呢?就是A,有人可能会选D,因为考虑的j++的自增操作。实际上,c++在计算表达式值时,使用一种“逻辑短路”的方法,一旦确定表达式中的值,表达式中余下部分就不会再计算了,比如上面的表达式,!a = 0,所以整个
2009-10-03 09:04:00 536
原创 字符串最常公共子序列
int Commlen(string s1, string s2){//假设s1[0], s2[0]都没有保存实际字符,只是压入一个空值。 int l1,l2,i,j; l1 = s1.size(); l2 = s2.size(); vector l(l1+1, 0); vector r(l1+1, 0); for(j = 1; j<l2; j++)
2009-10-01 13:43:00 522
原创 全排列问题
道富恒天2010招聘题目出现了全排列问题,以前做过,竟然忘了,郁闷,不过经过这次考试,我想这类问题,我应该不会再忘了~~~ 设R={r1, r2,...,rn},R的全排列为Perm(R), Ri=R-{ri},则Perm(R) = r1Perm(R1},r2Perm(r2),...,rnPerm(Rn); 比如R={a,b,c},则Perm(R)=aPerm({b,c}),bPe
2009-10-01 13:05:00 688
原创 道富恒天2010一道笔试题
杭州出租车的计价表位:打表一次收起步价10元,3公里之内只收起步价,3公里~10公里按2元收费,10公里以上按3元一公里收费。加入市政府规定消费者有权在行驶途中让司机多次打表计费,那么预计行程大于____公里,消费者为了省钱会选择多次打表。(3分) 老狼我的解法: 10 + 2*7 + (z-10)*3 = 10 + 2*x+ 10 +2*y;z = x+3 + y +3;
2009-09-30 08:56:00 2747 2
原创 IT面试算法题(3)
写一算法检测单向链表中是否存在环(whether there is a loop in a link list), 要求算法复杂度(Algorithms complexity是O(n)) 并只使用常数空间(space is O(c)).注意,你只知道一个指向单向链表头的指针。链表的长度是不定的,而且环出现的地方也是不定的,环有可能在头,有可能在中间。而且要求是检测, 不能破坏环的结构。
2009-09-29 09:23:00 875
原创 IT面试算法题(2)
1、请编写一个 C 函数,该函数将给定的一个数字字符串转换成整数。int StrToNum(char*str){ int num = 0; while(*str!=/0) { num = 10*num + (*str - 0); str = str +1; } return num;} 2、请编写一个 C 函数,该函数将给定的一个
2009-09-28 22:17:00 785
原创 IT面试算法题(1)
请编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数,并请给出该题的至少一个不同解法。下面是我写的几个函数:int Test1NumofOne(unsigned char c){ int num=0; int i; for(i = 0; i < 8; i++) { if(c&0x01) num++; c = c>>1;
2009-09-28 21:30:00 832
原创 linux进程操作(1)
1、linux中进程的概念 进程是具有一定功能的程序关于一个数据集合的一次运行活动,是处于活动状态的计算机程序。 进程在生存期间可能处于三种基本状态:运行态、就绪态、等待态。 在多处理操作系统中,进程具有独立的权限和职责。如果系统中某个进程崩溃,不会影响到其他的进程。每个进程运行在各自的虚拟地址空间中,通过一定的通信机制,他们之间才能发生联系。 2、linux中每个
2009-09-20 18:37:00 484
原创 优先队列的用法
#include "stdafx.h" #include #include #include using namespace std; //看看priority_queue的声明,模板的第三个参数就是比较规则,规则可以是个函数,也可是个仿函数 //template , // class Compare =
2009-09-20 11:16:00 696
原创 字符串替换函数
字符串替换函数:#include "stdafx.h"#include #include using namespace std; string replaceAll(string s1, string s2, string s3){ string str1(s1); string::size_type st = str1.find(s2);
2009-09-19 10:05:00 507
原创 kruscal最小生成树算法
下面是kruscal最小生成树算法,用了并查集和优先队列: // kruscal.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include using namespace std;class UFset{public: vector parent
2009-09-14 10:13:00 703
原创 Prim算法代码
今天整理调试的prim算法代码:#include "stdafx.h"#include #include #include using namespace std; const int MAXINT = numeric_limits::max(); template void Prim(int n, Type** c)
2009-09-13 21:14:00 1382
原创 Dijkstra算法代码
今天写了Dijkstra单源最短路径的代码,贴出来... #include "stdafx.h"#include #include #include using namespace std;const int MAXINT = numeric_limits::max(); template void Dijkstra(int n, int
2009-09-12 11:26:00 5556 1
原创 c++中头文件
在c++中要防止头文件循环包含和多重包含,这就需要定义定义头文件时,加上 #ifndef _XXX_H#define _XXX_H....#endif 另外还有一种forward reference. 如果要引用一个类,但不能包含其头文件(比如,该类依赖于你正在编写的类),可以简单的告诉编译器存在该类就可以了,比如与引用
2009-09-10 20:13:00 586
原创 c++中使用变长参数列表
C++是C的超集,但C中的几个隐含特性C++中却找不到对应的“替代品”,... c++以及c中函数传递参数时(按值传递),参数从左到右入栈,看下面的代码:#include "stdafx.h"#include using namespace std;void fun(int a, ...){ int *temp= &a; int i;
2009-09-10 19:07:00 1254
原创 openGL中的抗锯齿实现
图形绘制到屏幕时,光栅化图像通过离散的像素点来表示,因此所绘制的图元(比如直线)会产生锯齿,这种锯齿也称作走样。消除锯齿的技术称为反走样,也叫做抗锯齿,通过这种处理可在一定程度上消除锯齿的影响,增强显示效果。在OpenGL中,可通过函数glHint()来对图像质量和绘制速度之间的权衡作一些控制,其函数形式为: void glHint(GLenum targe
2009-08-18 21:05:00 17328
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人