【问题标题】:Creating a 3d card using DirectXTK with Dynamic texture on one side使用一侧带有动态纹理的 DirectXTK 创建 3d 卡
【发布时间】:2020-06-14 09:08:31
【问题描述】:

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

也欢迎任何有关如何执行此操作的建议。

谢谢

【问题讨论】:

  • 你的纹理数据有多“动态”?它是一直在变化还是在启动时生成一次?
  • @Alex 刚刚在启动时生成。我将有多个对象实例,每个实例都有不同的正面。

标签: c++ textures directx-11 directxtk


【解决方案1】:

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

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

【讨论】:

  • 这就是我的设想,但是我没有找到任何创建贴图并将贴图应用到盒子而不是立方体的示例,特别是因为我只有 2 个纹理而不是 6 个。这就是我在挣扎。
  • 一个std::map。不是立方体贴图。两种不同的东西。该贴图用于在 CPU 端组织纹理,以便您在渲染时间知道选择哪一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 2018-12-11
  • 2010-10-30
  • 2016-02-26
  • 2019-01-15
相关资源
最近更新 更多