游戏开发论坛

 找回密码
 立即注册
搜索
查看: 13243|回复: 17

如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

[复制链接]

23

主题

94

帖子

94

积分

注册会员

Rank: 2

积分
94
发表于 2008-7-9 11:15:00 | 显示全部楼层 |阅读模式
据说老显卡对纹理要求有着很多的限制
比如:大小必须是2^n * 3^m  ,还有要求要m=n的(正方形纹理)?
是不是支持的最小纹理也有要求?有8*8一说?


现在我只能知道显卡支持的最大纹理尺寸...如下:
pd3dDevice->GetDeviceCaps(&d3dCaps);

  //   d3dCaps.MaxTextureWidth   (最大宽度)
  //   d3dCaps.MaxTextureHeight(最大高度)

-----

35

主题

1735

帖子

1739

积分

金牌会员

Rank: 6Rank: 6

积分
1739
QQ
发表于 2008-7-9 11:52:00 | 显示全部楼层

Re:如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

多老?

23

主题

94

帖子

94

积分

注册会员

Rank: 2

积分
94
 楼主| 发表于 2008-7-9 13:57:00 | 显示全部楼层

Re:如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

就问是不是有显卡只支持2的次幂大小的纹理?

2

主题

132

帖子

132

积分

注册会员

Rank: 2

积分
132
发表于 2008-7-9 14:06:00 | 显示全部楼层

Re:如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

不是多老的问题

AMD的显卡似乎大部分都只能是2次幂大小的,好像HD2系列之前的就全是2次幂的,HD2系列有几个好像不是,HD3/HD4系列就不知道了。

nVidia的好像基本上都支持非2次幂大小。我能确定的是从GF3(包括)系列之后就全部都支持非2次幂大小的。再老的显卡就不清楚了

其他集成显卡,Intel的915/945这一系列的支持非2次幂的,其他不清楚。

检测代码是这样的:

pd3dDevice->GetDeviceCaps(&d3dCaps);

if ( D3DPTEXTURECAPS_POW2 & d3dCaps.TextureCaps )
{
    // 显卡必须是2次幂大小的平面纹理(就是普通的图片)
}

if ( D3DPTEXTURECAPS_VOLUMEMAP_POW2 & d3dCaps.TextureCaps )
{
    // 显卡必须是2次幂大小的体积纹理
}

2

主题

132

帖子

132

积分

注册会员

Rank: 2

积分
132
发表于 2008-7-9 14:14:00 | 显示全部楼层

Re:如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

另外没有正方形纹理一说,只有长、宽、(或者还有深度)是2的n次幂,没必要是正方形(或者正方体)。

最小纹理也没有这种说法,都支持1*1 的。

只有CUBE纹理必须是正方形。

0

主题

36

帖子

36

积分

注册会员

Rank: 2

积分
36
发表于 2008-7-9 14:36:00 | 显示全部楼层

Re:如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

并非GF3系列之后都支持非2次幂大小的,GF4 MX440就不支持非2次幂的纹理。

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2008-7-9 14:57:00 | 显示全部楼层

Re:如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

gf3/ati8都支持矩形贴图,非2次幂限制。

但2D贴图仍然必须是2次幂。

这两个用法上有点儿区别。

23

主题

94

帖子

94

积分

注册会员

Rank: 2

积分
94
 楼主| 发表于 2008-7-9 15:27:00 | 显示全部楼层

Re: Re:如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

Fenger: Re:如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

不是多老的问题

AMD的显卡似乎大部分都只能是2次幂大小的,好像HD2系列之前的就全是2次幂的,HD2系列有几...


非常感谢你的解答。
再问你两个问题:
1. 我是要写一个2D游戏的图形渲染部分,假如检测到用户的机子的显卡必须要求纹理大小为2的幂,应该怎么处理啊?把美工提供的图片修改为2的幂吗?
2. 什么叫体积纹理啊?

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2008-7-9 16:32:00 | 显示全部楼层

Re:如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

一开始就按2次幂制作

23

主题

94

帖子

94

积分

注册会员

Rank: 2

积分
94
 楼主| 发表于 2008-7-9 17:25:00 | 显示全部楼层

Re: Re:如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

hyzboy: Re:如何知道显卡是否要求纹理尺寸必须是2的幂大小的?

一开始就按2次幂制作


2的幂这些数太少了。。。
2  4  8  16  32  64  128  256  512  1024  2048  。。。。。。。。
假如就是需要一张300*400的纹理,按2的次幂制作怎么做呢?
300和400都与任何一个2的次幂的数离的很远,要近似都不好近似啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 01:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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