Azure Product
浏览模式: 普通 | 列表
11月, 2005 | 1 | 2 | >
给一个程序的例子:
#include <iostream.h>
int &put(int n);
int vals[10];
int error=-1;
void main()
{   
put(0)=10;   //以put(0)函数值作为左值,等价于vals[0]=10;
put(9)=20;   //以put(9)函数值作为左值,等价于vals[9]=10;
cout<<vals[0];
cout<<vals[9];
}
int &put(int n)
{   if (n>=0 && n<=9 ) return vals[n];
   else {   cout<<”subscript error”;  return error; }
}

一个引用中值得注意的问题

[ 2005-11-28 21:57:48 | 作者: Admin ]
假设有如下函数声明:
string foo( );
void bar(string & s);

那么下面的表达式将是非法的:
bar(foo( ));
bar("hello world");
原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。
引用型参数应该在能被定义为const的情况下,尽量定义为const 。

Function Object & Function Object Adapters

[ 2005-11-27 18:04:13 | 作者: Admin ]
标准的程序库中,事先定义了一组 function object,  function object 实现了本来可以以独立函数加以定义的事物, 这样做主要是为了效率, 因为他将call变成了inline.

原来的函数是:
bool less_than(int v1, int v2)
{
 return v1<v2 ? true:false;
}

vector<int>::iterator i = sort(v.begin(), v.end(), less_than);

用function object替换后为
vector<int>::iterator i = sort(v.begin(), v.end(), less<int>() );

这两段程序都是同样的功能, 升序排列.

而Function ...

阅读全文...

C++中得到基本数据类型的取值范围

[ 2005-11-26 16:15:05 | 作者: Admin ]
欲知道某个类别的最大值和最小值, 可查询标准程序库中 numeric_limit class.
#include<limits>
int max_int = numeric_limit<int>::max();
double min_dbl = numeric_limit<double>::min();

推荐日志 Detail Map Demo Using CG

[ 2005-11-24 20:12:06 | 作者: Admin ]
在原来的 LOD Terrain 的基础上, 在Pixel Shader中将一张草地的纹理,和一张雪地的纹理混合, 产生了细节纹理(Detail Map)的效果,以模拟在一定海拔高度的山峰上,出现冰雪覆盖的效果.

由于使用了Shader Language, 在某些不可编程的固定流水线显卡上可能无法运行.建议使用NV FX系列以上的显卡,观看演示.
演示截图:

uploads/200511/24_201904_detailmap1.jpg


uploads/200511/24_201935_detailmap2.jpg


程序运行需要cg.dll 和 cgGL.dll 动态连接库的支持,
如果没有,请在这里下载, 并拷贝到你的system32目录下面去:
[url]http://...

阅读全文...

推荐日志 LOD Terrain Demo

[ 2005-11-19 17:24:16 | 作者: Admin ]
演示截图:
uploads/200511/19_175504_lod1.jpg

剔除了97.43%的顶点

uploads/200511/19_175608_lod2.jpg

剔除了97.24%的顶点

LOD (Level Of Detail) 层次细节, 是解决硬件性能不够发达的技术产物, 可以说它是用种过渡技术, 也就是说当硬件发展的一定阶段, LOD技术也许就会走向末端. 但现阶段,LOD还是解决渲染速度瓶颈问题的最有效的技术手段之一.

在我的DEMO中, 我使用了perlin noise来程序生成高度信息, 整个生成的高度图的大小为1025X1025, 按DEMO中的比例尺来换算,大约是4X4 平方公里的面积. 顶点总数大约为105万.

可以想象,如果不进行任何形式的优化, 完全 brute-force (全部一次渲染), ...

阅读全文...

Frustum Culling 核心代码

[ 2005-11-18 17:27:47 | 作者: Admin ]
首先计算6个裁减面的方程系数
//-----------------------------------------------------------------------------
// Name: calculateFrustumPlanes()
// Desc:
//-----------------------------------------------------------------------------
void calculateFrustumPlanes( void )
{
 float p[16]; // projection matrix
 float mv[16]; // model-view matrix
 float mvp[16];
...

阅读全文...
现在的虚拟现实程序,很多都用到了地形, 但外部地形数据量过啊, 十分消耗储存空间, 这样一来,如果能在程序中用算法来预先生成地形数据,这样一来就可以不用在你的DEMO里面带着一个庞大的地形数据文件了.

我在这里介绍一种不规则的地形生成方法, 算法都很简单, 很实用!

Fault Formation

此方法大致分两个过程
  • 1.生成原始地形
  • 2.腐蚀地形生成平滑的地势
第一个过程需要在生成有"沟壑"的地形, 这样我们就需要在空白的高度数据"矩形"中加入一条线, 这样高度数据的"矩形"就会被这条线分成两个部分, 然后我们让某部分的高度值数据全部增加一个步长, 用此高度数据生成地形,就会出现一条沟壑.
uploads/200511/17_142700_fault1.gif


我们重复多次这样处理同一个高度数据, 就可以产生沟壑丛生,且尖利的地形.
...

阅读全文...

MD5 的 C++实现方法

[ 2005-11-15 11:26:46 | 作者: Admin ]
程序源自互联网,放到这里以备以后使用。

http://bbs.gameres.com/showthread.asp?threadid=41389

推荐日志 珍藏的电子书籍大公开,陆续更新中!

[ 2005-11-10 01:42:56 | 作者: Admin ]
本人用eMule苦战了几天几夜,终于把VeryCD上面关于"游戏开发"和"图形学"方面的电子书籍全部收入囊中,后又发现www.eop.cn提供的免费的网络空间,可以提供页面下载功能,于是决心将这些宝贝全部放到网上, 将他们陆续公布于众, 造福人类!!

如果下载有什么疑问,请跟贴!

下载密码为:azureproduct

uploads/200511/10_021415_split.gif


NVIDIA GPU Programming Guide

uploads/200511/10_015346_programguide.jpg
Introduction
This guide will help you to get the highest
...

阅读全文...
1 | 2 | >
ħ˽ ħ˽ : ϲ ϲվ ϲʿ ϲʿ ϲʿ ϲվ ϲ ϲվ ϲ ϲ ͸۾ ˽ ѾѾַ document.write("");