2.2 Images with cTexture(图像和纹理)

 

2.2 Images with cTexture(图像和纹理)

纹理可以使3D图像有质量感。没。。。。用。。。。的。。。话。。

现在,有了cTexture的帮助,啊~~~世界变得美好了:

class cTexture

{

protected:

cGraphics *m_Graphics; // cGraphics父类

IDirect3DTexture8 *m_Texture; // Texture COM(纹理接口)

unsigned long m_Width, m_Height; // 纹理图象的尺寸

 

public:

cTexture(); // 构造

~cTexture(); // 析构函数

IDirect3DTexture8 *GetTextureCOM(); // 返回 纹理 COM

//从文件读取纹理

BOOL Load(cGraphics *Graphics, char *Filename, /

DWORD Transparent = 0, /

D3DFORMAT Format = D3DFMT_UNKNOWN);

// 从现有的IDirect3DTexture8中配置一个cTexture

BOOL Create(cGraphics *Graphics, IDirect3DTexture8 *Texture);

BOOL Free(); // 释放纹理对象

BOOL IsLoaded(); //如果纹理装在成功返回TRUE

long GetWidth(); // Return width (pitch) of texture(返回纹理的宽)

long GetHeight(); // Return height of texture(返回纹理)

D3DFORMAT GetFormat(); //返回纹理存储格式

// 画一个2-D纹理图片

BOOL Blit(long DestX, long DestY, /

long SrcX = 0, long SrcY = 0, /

long Width = 0, long Height = 0, /

float XScale = 1.0f, float YScale = 1.0f, /

D3DCOLOR Color = 0xFFFFFFFF);

};

 

一个cTexture类的纹理可以从两个途径获得:硬盘中的图像文件,已有IDirect3DTexture* 对象。如果你从硬盘获得,调用cTexture::Load,他只需要很少的参数就可以工作:首先是一个已经初始化过的cGraphics对象,再是文件的名字。

接下来的两个可选参数是透明(transparent)颜色键(color key)(如果你想使用透明像素纹理),和存储格式。透明(transeparent)参数的默认值0将告诉Load函数不使用透明像素。

倘若使用一个D3DCOLOR_RGBA就可以改变这个程序(请确定为alpha参数指定了一个255的值)

当使用Format(格式),使用Direct3D纹理格式比如D3DFMT_A1R5G5B5.要记住如果纹理要使用透明像素必须使用一个Alpha通道,所以要确定要使用例如D3DFMT_A1R5G5B5 D3DFMT_A8R8G8B8的格式。

 

使用cGraphics::SetTexture函数与cTexture结合绘出纹理映射多边形。另一方面,如果你使用一个纹理对象的位图图像,可以直接使用cTexture::Blit绘出来,它使用了一个特殊的对象ID3DXSprite(俗称精灵)

 

现在,我将介绍怎样使用Blit函数。要绘制图片你需要指定一个终点坐标,也是左上角的坐标,再加上宽、高,缩放比例,还有你想使用的颜色值。

这里有一个小例子:

// 指定 g_Graphics 是一个已经被初始化过的cGraphics 对象

cTexture Texture;

Texture.Load(&g_Graphics, texture.bmp);

// 在屏幕的(0,0)点绘出纹理

Texture.Blit(0,0);

Texture.Free(); //释放纹理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值