DX10使用cube纹理实现天空盒
luyued 发布于 2011-01-06 22:33 浏览 N 次DX10中引入了cube纹理,这种纹理可以记录纹理的方向坐标轴。
其使用方式如下:
一.使用Texture tool 制作一个cube纹理。
二.将纹理作为一个资源载入,并将其赋值给TextureCube类型的hlsl渲染资源
三.使用Sample(SamplerState,float3)进行映射
四.绘制天空盒,我们这里可以绘制一个半圆
五.进行背后拣选,因为我们是处于天空盒内部的,所以必须要对天空盒内部进行绘制。
改变深度缓存的比较方式。
六.由LESS变成LESS_EQUAL
具体代码:
1.使用工具texture tool即可
2.使用以下代码载入资源
D3DX10_IMAGE_LOAD_INFO loadInfo;
loadInfo.MiscFlags = D3D10_RESOURCE_MISC_TEXTURECUBE;
ID3D10Texture2D* tex = 0;
HR(D3DX10CreateTextureFromFile(md3dDevice, filename.c_str(),
&loadInfo, 0, (ID3D10Resource**)&tex, 0) );
D3D10_TEXTURE2D_DESC texDesc;
tex->GetDesc(&texDesc);
D3D10_SHADER_RESOURCE_VIEW_DESC viewDesc;
viewDesc.Format = texDesc.Format;
viewDesc.ViewDimension = D3D10_SRV_DIMENSION_TEXTURECUBE;
viewDesc.TextureCube.MipLevels = texDesc.MipLevels;
viewDesc.TextureCube.MostDetailedMip = 0;
ID3D10ShaderResourceView* rv = 0;
HR(md3dDevice->CreateShaderResourceView(tex, &viewDesc, &rv));
上面代码最后的rv即为纹理资源
mfxCubeMapVar = fx::SkyFX->GetVariableByName("gCubeMap")->AsShaderResource();
这里将着色器程序中的gCubeMap变量与mfxCubeMapVar变量进行交互。
HR(mfxCubeMapVar->SetResource(rv));//将纹理资源赋值给着色器变量
3.在着色器程序中
gCubeMap.Sample(gTriLinearSam, pIn.texC);
其中gTriLinearSam为
SamplerState gTriLinearSam
{
Filter = MIN_MAG_MIP_LINEAR;
AddressU = Wrap;
AddressV = Wrap;
};
主要描述了纹理的状态
4.绘制半圆,同时保持圆心与摄像头出于同一位置。
5.设置背部消隐和深度缓存的处理
//定义了一个不进行背部消隐的状态
RasterizerState NoCull
{
CullMode = None;
};
DepthStencilState LessEqualDSS
{
// 默认状态为LESS,但是这样的话,那些处于深度缓存z=1的位置点将不能显示
//所以改成LESS_EQUAL
DepthFunc = LESS_EQUAL;
};
technique10 SkyTech
{
pass P0
{
SetVertexShader( CompileShader( vs_4_0, VS() ) );
SetGeometryShader( NULL );
SetPixelShader( CompileShader( ps_4_0, PS() ) );
SetRasterizerState(NoCull);
SetDepthStencilState(LessEqualDSS, 0);
}
}
MSN空间完美搬家到新浪博客!
- 07-01· 北凉国的那些事(组诗)
- 07-01· 《乱世佛音》 第七章 巨变
- 07-01· 南匈奴始末(3)
- 06-30· 流浪在波希米尼亚
- 06-30· 希尼亚从大洋西岸放飞新
- 06-28· 瑪利亞之城 - 家庭日 "光
- 06-28· 至青年营弟兄姐妹的一封
- 06-26· 《三国群英大富翁》追忆
- 06-24· 东莞血汗工厂实录(281:沙田
- 06-22· 第一次看戏
- 06-22· 经典复刻,独一无二:试
- 06-22· 蓝旗营教学中心9月份盛大
- 06-22· 品牌折扣女装嫣然品牌折
- 06-21· IQVopdnkvdz 1100
- 06-21· kriyoylto8fyds'p;tyijyfuifiogoi
- 06-21· 巴黎春天缤纷圣诞 喜迎新
- 06-21· 晒JS宝宝贝贝些 咯
- 06-21· 司马氏的谥法和葬仪
- 06-21· [转载]司马氏的谥法和葬仪
- 06-21· 闲来蓟县看秋山