|
|
发表于 2006-12-2 17:58:00
|
显示全部楼层
Re:请问:如何为高度图指定多个纹理坐标?
纹理融合
比如你有4种纹理,你要根据不同高度,设置不同的纹理,你可以把这四个纹理融合到一张纹理上.
怎么融合呢?
根据高度图来.
for(int i=0;i<height;i++)
for(j=0;j<weight;j++){
int h = GetHeight(i,j);
unsigned long color;
SetColor((float)i/Hieght,(float)j/weight,h,&color);
}
//x,y表示纹理坐标
void SetColor(float x,float y, int height, ulong &color)
{
if(height >= heightest)
color = pTex[0]->GetColor(x,y,1);
esle if(height < heightest && height >= high)
{
float rate = (height - high) / (heightest - high);
color = pTex[0]->GetColor(x,y,1-rate) + GetColor(x,y,rate);
}
else if(height < high && height >= flat)
{
...
}
}
我以前写过的,忘记了,差不多就是这个意思.
网上找找这方面资料吧
看看那本书吧,名字记不清了
<<focus on terrain renderring>> |
|