首页 > 解决方案 > 使用一侧带有动态纹理的 DirectXTK 创建 3d 卡片

问题描述

我正在尝试创建一个纸牌游戏。我想要一副卡片,卡片的背面是固定纹理但正面是动态的,即它上面有一些文本字段以及一张图片。我创建了一个大小为 3x2x0.16 的盒子来代表我的卡片。我可以加载固定纹理,但我在网上找不到任何代码示例,这些示例向我展示了如何在盒子的一侧加载固定纹理,在另一侧加载动态纹理。谁能指点我一些例子。我主要使用 DirectXTK,但也可以从任何 DirectX 代码中理解它。
DirectX11 是我正在使用的 DirectX 版本。

任何关于如何做到这一点的建议也将受到欢迎。

谢谢

标签: c++texturesdirectx-11directxtk

解决方案


生成卡片的最简单方法(取决于卡片的数量和大小)是在启动时使用渲染到纹理来生成面。有效地绘制动态卡片面,就像在世界中绘制它们一样,但使用正交投影矩阵和空白 2D 纹理对象作为渲染目标。一旦你有了它,将这些“动态”纹理缓存在一个中std::map,并在绘制特定卡片时绑定它们。

如果您的面相对较小,或者您想节省纹理内存,您可以将多个卡片面拼接成一张大的纹理表,然后使用一些着色器缩放逻辑来引用该表的子部分以渲染特定纹理。有了这个,您可以组装仅包含该特定游戏中使用的面孔的卡片“甲板”,从而可以将其他人从 GPU RAM 中驱逐出去。


推荐阅读