游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5891|回复: 19

我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡说了算

[复制链接]

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
发表于 2011-10-30 22:39:00 | 显示全部楼层 |阅读模式
我的观点基于以下几点:
若显卡不支持非2的次幂纹理,则:
1:若使用IDirect3DDevice9::CreateTexture创建非2的次幂尺寸图像将失败
2:若使用D3DXCreateTexture创建非2的次幂图像将被扩充成2的次幂
3:若使用D3DXCreateTextureFromFileInMemoryEx创建非2的次幂图像将被扩充成2的次幂(就算用了D3DX_DEFAULT_NONPOW2也没用)

只有一个函数比较特殊:D3DXCreateTextureFromFileEx,用它创建图像可以完美支持非2的次幂图像,但实际游戏中很少用这个函数,故总体上,创建一个非2的次幂纹理,还是显卡说了算,我没找到除了D3DXCreateTextureFromFileEx之外,D3D会帮你做兼容的函数。
对于2D游戏来讲,将纹理扩充成2的次幂将是一个致命打击,特别是对于使用商业资源进行做游戏的人来讲尤其如此。
难怪windows游戏编程大师技巧的作者也认为,用D3D做2D很麻烦。
我想,有用D3D做过2D游戏的朋友,应该会有同感。

求高手指正缺漏。

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2011-10-31 01:15:00 | 显示全部楼层

Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡说了

从一开始就是显卡说了算。

用3D API做2D,玩了十年。该碰上的问题都碰上了,该解决的问题也都解决了。

可以坦白的说,用3D API玩2D,没想像的那么简单。

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
 楼主| 发表于 2011-10-31 09:06:00 | 显示全部楼层

Re: Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡

hyzboy: Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡说了算

从一开始就是显卡说了算。

用3D API做2D,玩了十年。该碰上的问题都碰上了,该解决的问题也都解决了。

可以坦白的说,用3D API玩2D,没想像的那么简单。


谢谢大师的解答。
那按照您的意思,对于非2的次幂问题,只能通过规范图片来解决了(若要做2D游戏的话)?

26

主题

417

帖子

476

积分

中级会员

总版主

Rank: 3Rank: 3

积分
476
发表于 2011-10-31 10:36:00 | 显示全部楼层

Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡说了

可以将不同的大小的贴图拼接到一张尺寸为2的幂的大贴图上

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
 楼主| 发表于 2011-10-31 12:33:00 | 显示全部楼层

Re: Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡

playerwing: Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡说了算

可以将不同的大小的贴图拼接到一张尺寸为2的幂的大贴图上


谢谢总版主。
我明白了。

10

主题

149

帖子

149

积分

注册会员

Rank: 2

积分
149
QQ
发表于 2011-11-1 08:36:00 | 显示全部楼层

Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡说了

哎,服了服了啊!一个纹理尺寸问题,就搞了一年多,楼主还是执迷不悟啊!

不管是编程还是做其它什么事情,都有一定的规则和规律,你在初学阶段,知道有这么个规则,遵守它就完了嘛,你还要想突破它,精神可嘉,问题是你还没有突破它的能力啊,花了这么多时间去“研究”,到头来还是得遵守规则,你的时间是不是白花了?你傻不傻啊?在你费时间搞这个的时候,人家3D都做得差不多了。

真的想做游戏,就不要怕麻烦。用2次幂纹理麻不麻烦?是很麻烦。但是它是一个规则啊。就像一个跑道,你就得沿着跑道走,你非得出圈行不行啊?出圈很刺激,刺激是刺激,再出去就回不来了,就郁闷了。就像人要吃饭,人不能吃屎,你说我就不行,我就要吃屎,我把屎做得像饭一样香然后把它吃了,行不行啊?不要太固执,太呆板,太自大了!

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2011-11-1 09:34:00 | 显示全部楼层

Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡说了

恩,用3D做2D是很麻烦,但都是有办法解决的,没必要纠结2次幂问题
另,楼上回复太亮了^_^

0

主题

398

帖子

577

积分

高级会员

Rank: 4

积分
577
发表于 2011-11-1 10:14:00 | 显示全部楼层

Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡说了

6楼和LZ有仇啊?怎么每个帖子都这么说啊? 不过确实佩服lz,一年多来反复执着地纠结于D3D还是OpenGL, D3D还是DDraw, pow2纹理还是pow2纹理....近期LZ的问题貌似又回到起点上来了...

77

主题

485

帖子

486

积分

中级会员

Rank: 3Rank: 3

积分
486
发表于 2011-11-1 10:37:00 | 显示全部楼层

Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡说了

不用2次幂的纹理,一样可以正常加载啊.

用2次幂的纹理,到底有什么好处?

10

主题

149

帖子

149

积分

注册会员

Rank: 2

积分
149
QQ
发表于 2011-11-1 10:44:00 | 显示全部楼层

Re: Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡

artint: Re:我的结论:DX9不支持非2的次幂尺寸纹理,还得显卡说了算

6楼和LZ有仇啊?怎么每个帖子都这么说啊? 不过确实佩服lz,一年多来反复执着地纠结于D3D还是OpenGL, D3D还是D...


非也啊,我不但不仇恨LZ,还对他有点感情,如果没有感情,我说都懒得说啊。LZ的确有激情有干劲,但是他的思维走错路了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-9 14:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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