游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6426|回复: 15

D3DXCreateTextureFromFileEx

[复制链接]

4

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2005-3-27 18:18:00 | 显示全部楼层 |阅读模式
载入的图都被申拉了,怎么才能保持原样。
if(FAILED(D3DXCreateTextureFromFileEx(
   Graphics->GetDeviceCOM(),
   Filename,
   D3DX_DEFAULT,
   D3DX_DEFAULT,
   D3DX_DEFAULT,
   0,
   Format,
   D3DPOOL_MANAGED,
   D3DX_FILTER_TRIANGLE,
   D3DX_FILTER_TRIANGLE,
   D3DColorKey,
   NULL,
   NULL,
   &m_Texture)))
      return FALSE;
请高手指教。。。。。。。。。。。。。。。

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-3-27 20:40:00 | 显示全部楼层

Re:D3DXCreateTextureFromFileEx

d3d9中 似乎忘了作贴图拉伸系数!呵呵!胡猜得!主要是因为硬件处理的需要,所有的贴图都尽可能得少做运算!就导致了贴图的尺寸原则进一步严格,即使是在内存中!
长宽都必须是2的整数次幂,我猜你大概是调了一些尺寸不符合该原则的图吧!

15

主题

1268

帖子

1268

积分

金牌会员

Rank: 6Rank: 6

积分
1268
发表于 2005-3-27 20:43:00 | 显示全部楼层

Re:D3DXCreateTextureFromFileEx

"D3DX_DEFAULT,
   D3DX_DEFAULT,
   D3DX_DEFAULT,"
寒!

1

主题

48

帖子

48

积分

注册会员

Rank: 2

积分
48
发表于 2005-3-27 20:53:00 | 显示全部楼层

Re:D3DXCreateTextureFromFileEx

拉伸原因应该是硬件贴图大小应该是正方形,边长为2的幂,比如128*128、256*256之类,所有不符的比如300*200都被拉伸到比如256*256之类的正方形中。

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-3-27 20:57:00 | 显示全部楼层

Re:D3DXCreateTextureFromFileEx

楼上的错误认识,dx9没有正方形原则

1

主题

48

帖子

48

积分

注册会员

Rank: 2

积分
48
发表于 2005-3-27 21:17:00 | 显示全部楼层

Re:D3DXCreateTextureFromFileEx

id3dxsprite是有拉伸问题的。

4

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2005-3-27 21:49:00 | 显示全部楼层

Re: Re:D3DXCreateTextureFromFileEx

necro: Re3DXCreateTextureFromFileEx

拉伸原因应该是硬件贴图大小应该是正方形,边长为2的幂,比如128*128、256*256之类,所有不符的比如300*200都被拉伸到比如256*256之类的正方形中。


也不是都是正方形128*256就不是正方形,也不会被2的次幂,
128,256,512,图的边长要等于这不能大不能小,一但大了小了就会被2的次幂。
有没有其它方法呀。呵呵! 我刚自学C++跟SDK才不过2,3个月呢,还很菜呀!有很多不明白的呀!

7

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2005-3-27 22:01:00 | 显示全部楼层

Re:D3DXCreateTextureFromFileEx

dx9的sdk所说,长宽是D3DX_DEFAULT从图片文件中自动获取的。应该没有2次方幂的限制。
其它代码正确吗?不会是你贴出来的时候得错误?比如vertex坐标不是符合纹理比例的,或者纹理坐标计算错了?

4

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
 楼主| 发表于 2005-3-27 22:21:00 | 显示全部楼层

Re: Re:D3DXCreateTextureFromFileEx

sammychan: Re3DXCreateTextureFromFileEx

dx9的sdk所说,长宽是D3DX_DEFAULT从图片文件中自动获取的。应该没有2次方幂的限制。
其它代码正确吗?不会...

那你可以写一段让我看看吗?不会被2次方幂。好吗?
if(FAILED(D3DXCreateTextureFromFileEx(
   Graphics->GetDeviceCOM(),
   Filename,
   D3DX_DEFAULT, //这里是自动获取图宽度
   D3DX_DEFAULT, //这里是自动获取图高度
   D3DX_DEFAULT,
   0,
   Format,
   D3DPOOL_MANAGED,
   D3DX_FILTER_TRIANGLE,
   D3DX_FILTER_TRIANGLE,
   D3DColorKey,
   NULL,
   NULL,
   &m_Texture)))
//这里是自动获取图宽度 //这里是自动获取图高度也好像只是裁剪图的范围吧。
如果我这里图定 640 * 480 只是显示这张640 * 480 ,其图里的内容被2次幕了 1024*512了.这样的怎么能看。!

7

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2005-3-27 23:32:00 | 显示全部楼层

Re:D3DXCreateTextureFromFileEx

楼上的,你如何得知你的纹理的大小呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 00:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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