游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 流川枫

某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持,就??

[复制链接]

32

主题

235

帖子

235

积分

中级会员

Rank: 3Rank: 3

积分
235
 楼主| 发表于 2009-10-24 17:16:00 | 显示全部楼层

Re: Re: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支

clayman: Re: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持,就??Σ挥?次?纾 驹??】



请善用google

http://www.google.com/custom?sa=Google+Search&cof=GALT%3A%23444444%3BS%3A...

英文完全一点都看不懂饿=w=
不管是谁无知,我说了,至少给个微软的文档上说是 “创建非2次幂的纹理实际上是占用2次幂的尺寸”,那比你说任何解释都有用啊。还是你们根本找不到?

32

主题

235

帖子

235

积分

中级会员

Rank: 3Rank: 3

积分
235
 楼主| 发表于 2009-10-24 17:18:00 | 显示全部楼层

Re: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持

clayman: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持,就??Σ挥?次?纾 驹??】

无知不可怕,可怕的是无知还脑残......
以为自己学了点岛国语就不得了了
我知道很多技术比你好的多的岛国人在外国论坛发帖也从来不用岛国语

我用日文是因为我从一开始就没打算让别人看懂饿=w=

32

主题

235

帖子

235

积分

中级会员

Rank: 3Rank: 3

积分
235
 楼主| 发表于 2009-10-24 17:23:00 | 显示全部楼层

Re: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持

zhyinty: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持,就??Σ挥?次?纾 驹??】

很明显2的次方幂要快一些,你给我用API创建一个NPOT试试。

快还是慢不没试过,但是注意一下,我主张的是D3DXSPRITE不要求2次幂!
事实上,D3DXSPRITE的确不要求2次幂。
我反驳的是“按微软说明的参数创建的纹理实际上占用2次幂的RAM”!
事实上,我检测MIP0的宽度和高度的确是原始的非2次幂的尺寸。

我是按证据才发表看点的,你们为什么不能也按证据,而不是空手胡说呢?
还是根本就找不到证据?

32

主题

235

帖子

235

积分

中级会员

Rank: 3Rank: 3

积分
235
 楼主| 发表于 2009-10-24 17:29:00 | 显示全部楼层

Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持,就

就算我说的都是错的,那也至少用官方的文档什么的证据来反驳吧。
试想一下,法官面对一个有证据的指证和毫无根据的反驳,法官会如何裁决?

7

主题

55

帖子

55

积分

注册会员

Rank: 2

积分
55
发表于 2009-10-24 17:53:00 | 显示全部楼层

Re: Re: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支

流川枫: Re: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持,就??Σ挥?次?纾 驹??】


快还是慢不没试过,但是注意一下,我主张的是D3DXSPRITE不要求2次幂!
事实上,D3DXSPRITE的确不要求2次...



请问你是如何检测的,GetSurfaceLevel?

32

主题

235

帖子

235

积分

中级会员

Rank: 3Rank: 3

积分
235
 楼主| 发表于 2009-10-24 18:43:00 | 显示全部楼层

Re: Re: Re: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件

huangxizhuhuo: Re: Re: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持,就??Σ挥?次?纾 驹??】...




请问你是如何检测的,GetSurfaceLevel?

tex->GetLevelDesc(0,&sd);

32

主题

235

帖子

235

积分

中级会员

Rank: 3Rank: 3

积分
235
 楼主| 发表于 2009-10-24 18:50:00 | 显示全部楼层

Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持,就

        lpD3D->GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&Caps);
        if(Caps.TextureCaps & D3DPTEXTURECAPS_POW2)
                POW2 = true;//我的显卡上结果为true
        else
                POW2 = false;
        if(Caps.TextureCaps & D3DPTEXTURECAPS_NONPOW2CONDITIONAL)
                NONPOW2CONDITIONAL = true;//我的显卡上结果为true
        else
                NONPOW2CONDITIONAL = false;

上面的检测代码在我显卡上执行后,D3DPTEXTURECAPS_POW2和D3DPTEXTURECAPS_NONPOW2CONDITIONAL都为真。

下面是微软的官方说明:

D3DPTEXTURECAPS_NONPOW2CONDITIONAL
D3DPTEXTURECAPS_POW2 is also set, conditionally supports the use of 2D textures with dimensions that are not powers of two. A device that exposes this capability can use such a texture if all of the following requirements are met.

The texture addressing mode for the texture stage is set to D3DTADDRESS_CLAMP.
Texture wrapping for the texture stage is disabled (D3DRS_WRAP n set to 0).
Mipmapping is not in use (use magnification filter only).
Texture formats must not be D3DFMT_DXT1 through D3DFMT_DXT5.
If this flag is not set, and D3DPTEXTURECAPS_POW2 is also not set, then unconditional support is provided for 2D textures with dimensions that are not powers of two.

A texture that is not a power of two cannot be set at a stage that will be read based on a shader computation (such as the bem - ps and texm3x3 - ps instructions in pixel shaders versions 1_0 to 1_3). For example, these textures can be used to store bumps that will be fed into texture reads, but not the environment maps that are used in texbem - ps, texbeml - ps, and texm3x3spec - ps. This means that a texture with dimensions that are not powers of two cannot be addressed or sampled using texture coordinates computed within the shader. This type of operation is known as a dependent read and cannot be performed on these types of textures.

也就说当这两个标志都为开启时,可以有条件地支持非2次幂纹理。
但是这官方说明里可没有说 仍然会使用2次幂尺寸的显存 哦!
(话说我的可是超级垃圾的集成显卡,但是也可以有条件地支持非2次幂,这说明什么?)

32

主题

235

帖子

235

积分

中级会员

Rank: 3Rank: 3

积分
235
 楼主| 发表于 2009-10-24 18:56:00 | 显示全部楼层

Re: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持

流川枫: Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持,就??Σ挥?次?纾 驹??】

        lpD3D->GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&Caps);
        if(Caps.TextureCaps & D...

就像我所说的,这确实不需要2次幂的显存。
你们说非2次幂的纹理绘制起来速度低,这点也许是。(我没试过)
但是!!就算速度损失了点,但是显存却可以节省下来呀!
所谓的损失速度,节省空间的说。

32

主题

235

帖子

235

积分

中级会员

Rank: 3Rank: 3

积分
235
 楼主| 发表于 2009-10-24 19:02:00 | 显示全部楼层

Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持,就

知道我发这个帖子的初衷吗,就是希望不要再有初学者被某些人误导!
话说,我以前就被人误导,以为D3DXSPRITE要求2次幂纹理。
但是现在亲自去研究一下才知道,根本不是那么回事!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
D3DXSPRITE不过是个渲染流程的封装,和纹理管理和创建无任何关系!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

32

主题

235

帖子

235

积分

中级会员

Rank: 3Rank: 3

积分
235
 楼主| 发表于 2009-10-24 20:26:00 | 显示全部楼层

Re:某人???3DXSPRITE要求?理??次?纾?@是?解!只要硬件支持,就

GAMERES真是菜?多,高手少,而在?人?稻透?倭恕
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-18 09:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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