创建 Direct3D 精灵
在 Direct3D 中绘制透明精灵的关键在于使用纹理。如果你熟悉 3D 图形,那么你肯定多次听说过“纹理”这个词。在 3D 领域中,纹理的受欢迎程度仅次于无处不在的多边形。纹理用于为 3D 空间中的多边形表面上色。就像给墙壁刷漆后,漆的纹理会影响墙壁的外观和触感一样,在 3D 图形中,纹理也是类似的概念。
不过,在 3D 领域,“纹理”这个术语实际上是指将位图应用到多边形上。实际上,在 3D 图形的上下文中,纹理不过是一个位图图像。而在计算机图形学之外,“纹理”这个词有完全不同的含义。所以,它更多地描述了图像如何应用到多边形上,而不是图像本身是什么。纹理是有纹理的,位图是被绘制的。这就是为什么不能使用 Direct3DSurface8 对象来绘制精灵,因为该对象不支持透明度,而必须使用 Direct3DTexture8 对象。
1. Direct3D 纹理与表面的比较
Direct3D 纹理类似于 Direct3D 表面。表面代表屏幕上可见的图像,并且仅以 2D 术语进行处理;而纹理在应用到多边形时存在于 3D 中,否则它只是内存中的一个位图。可以从磁盘加载位图文件并将其存储在 Direct3D 表面中,加载位图文件并将其存储在 Direct3D 纹理中的过程与之非常相似。
2. 加载纹理
将位图文件加载到表面的关键在于 D3DX 中的一个子程序(更准确地说是方法)LoadSurfaceFromFile,它可以一次性将指定位图文件中的位图图像填充到表面中。之前介绍的 LoadSurface 子程序需要先在内存中创建表面,然后再加载位图图像。
纹理的复杂度与表面大致相同,一旦有机会通过代
超级会员免费看
订阅专栏 解锁全文
8

被折叠的 条评论
为什么被折叠?



