游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2978|回复: 9

请问:三维纹理怎样创建,使用?(谢绝提供E文文档)

[复制链接]

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
发表于 2007-1-21 16:42:00 | 显示全部楼层 |阅读模式
请问:三维纹理怎样创建,使用?(谢绝提供E文文档)

8

主题

284

帖子

296

积分

中级会员

Rank: 3Rank: 3

积分
296
QQ
发表于 2007-1-21 17:36:00 | 显示全部楼层

Re:请问:三维纹理怎样创建,使用?(谢绝提供E文文档)

请看DX SDK文档——Tutorial 5: Using Texture Maps

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-1-22 14:56:00 | 显示全部楼层

Re:请问:三维纹理怎样创建,使用?(谢绝提供E文文档)

3维纹理!!!
这么高深的东西!!!

现在的硬件支持吗???

30

主题

126

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2007-1-22 15:33:00 | 显示全部楼层

Re:请问:三维纹理怎样创建,使用?(谢绝提供E文文档)

我都还没搞明白三维纹理是啥东西,什么时侯才用到三维纹理,请楼主赐教一下哈,请转我的问题:
http://bbs.gameres.com/showthread.asp?threadid=54453

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2007-1-22 16:35:00 | 显示全部楼层

Re:请问:三维纹理怎样创建,使用?(谢绝提供E文文档)

谢绝回答

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-1-22 17:31:00 | 显示全部楼层

Re:请问:三维纹理怎样创建,使用?(谢绝提供E文文档)

256*256*256 立体文理制作大法:

先准备好 256*256的纹理图案 256张,
然后依次生成贴图,,,好象不行.
W方向上怎么进行融合呢?

太难了.

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
 楼主| 发表于 2007-1-22 23:50:00 | 显示全部楼层

Re:请问:三维纹理怎样创建,使用?(谢绝提供E文文档)

各位请看这里:http://www.gesoftfactory.com/developer/Textures.htm#立体纹理资源

106

主题

743

帖子

745

积分

高级会员

Rank: 4

积分
745
QQ
 楼主| 发表于 2007-1-22 23:55:00 | 显示全部楼层

Re:请问:三维纹理怎样创建,使用?(谢绝提供E文文档)

使用CreateVolumeTexture()创建一个三维纹理后,怎样渲染到这个纹理的每一层二维纹理呢?

65

主题

518

帖子

521

积分

高级会员

Rank: 4

积分
521
发表于 2007-1-23 02:00:00 | 显示全部楼层

Re: 请问:三维纹理怎样创建,使用?(谢绝提供E文文档)

创建比较困难,关键在你要用它干什么:比如流体模拟的体数据等...
使用的话如果是小规模的还比较好说,gpu gems里面介绍过用proxy polygons做view空间对齐的切片采样再过滤的方法比较常见。如果是大规模的,显存放不下的那种就麻烦多了...

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-1-23 10:41:00 | 显示全部楼层

我帮大家粘贴上来(HWBNET说过的资料)

创建立体纹理

以下示例代码显示了使用立体纹理所需的步骤。

首先,定义一个包含三个纹理坐标的自定义顶点类型,如以下示例代码所示。

struct VOLUMEVERTEX

{

    FLOAT x, y, z;

    DWORD color;

    FLOAT tu, tv, tw;

};



#define D3DFVF_VOLUMEVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|

                             D3DFVF_TEX1|D3DFVF_TEXCOORDSIZE3(0))

然后,把数据填入顶点。

VOLUMEVERTEX g_vVertices[4] =

{

    { 1.0f, 1.0f, 0.0f, 0xffffffff, 1.0f, 1.0f, 0.0f },

    {-1.0f, 1.0f, 0.0f, 0xffffffff, 0.0f, 1.0f, 0.0f },

    { 1.0f,-1.0f, 0.0f, 0xffffffff, 1.0f, 0.0f, 0.0f },

    {-1.0f,-1.0f, 0.0f, 0xffffffff, 0.0f, 0.0f, 0.0f }

};

现在,创建一个顶点缓存,并填入顶点数据。

下一步是用IDirect3DDevice9::CreateVolumeTexture创建一个立体纹理,如以下示例代码所示。

LPDIRECT3DVOLUMETEXTURE9 pVolumeTexture;

d3dDevice->CreateVolumeTexture( 8, 4, 4, 1, 0, D3DFMT_R8G8B8,D3DPOOL_MANAGED,

                                &pVolumeTexture );

在渲染图元之前,把当前纹理设为前面创建的立体纹理。以下示例代码显示了渲染一个三角形带的整个过程。

if( SUCCEEDED( d3dDevice->BeginScene() ) )

{

    // 用立体纹理绘制四边形。

    d3dDevice->SetTexture( 0, pVolumeTexture );

    d3dDevice->SetFVF( D3DFVF_VOLUMEVERTEX );

    d3dDevice->SetStreamSource( 0, pVB, sizeof(VOLUMEVERTEX) );

    d3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2);



   // 结束绘制。

   d3dDevice->EndScene();

}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 08:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表