如何将高度图绘制到屏幕上?

发布于 2024-12-01 22:56:42 字数 188 浏览 3 评论 0原文

我正在使用 DirectX10 来模拟水面,现在我有了一个高度图,它是点 (x,z) 处高度 (y) 的二维数组。但要将其绘制在屏幕上,我必须将其变成网格或有一个索引来绘制三角形拓扑。

但数据太大,无法手动完成。有什么方法可以让我把它画在屏幕上吗?我希望它很容易实现。如果 DirectX10 中包含的功能可以做到这一点,那么它对我来说是最好的。

I'm using DirectX10 to simulate a water surface, and I'm now with a height map,which is a 2D array of the heights(y) at the points (x,z). But to draw it on the screen, I must turn it into a mesh or have a index to draw triangle topology.

But the data is too large to do it manually. Are there any methods for me to draw it on the screen. I hope it's easy to implement. If there is function included in DirectX10 which can make it, the it's the best one for me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

水染的天色ゝ 2024-12-08 22:56:42

创建一个网格,格式化正方形网格(每个网格由两个三角形组成)并设置所有顶点y = 0。在顶点着色器中对高度图进行采样,并将存储在高度图中的值添加到顶点的y

这可能对你有帮助。

PS:如果你想要它覆盖的区域太大,你应该采取了解地形 LOD 技术(对于水应该同样有效)。

Create a mesh that format a grid of squares (each made of two triangles) and set all vertices y = 0. In the vertex shader sample the heightmap and add the value stored in the heightmap to the y of the vertice.

This might help you.

P.S: If the area you want it to cover is too big you should take a look at terrain LOD techniques (should work the same for water).

浮云落日 2024-12-08 22:56:42

我相信你可以用它制作一个网格。我怀疑您是否可以为太大而无法“网格化”的水面生成高度图。

你为什么看钻石广场?对于 512x512 高度图,您所需要做的就是定义一组点,然后为其生成三角形。它真的非常简单。

I'm sure you can make a mesh out of it. I doubt you can generate the heightmap for a water surface that is too large to "meshify".

Why are you looking at Diamond square. For a 512x512 heightmap all you need to do is define a set of point and then generate the triangles for it. Its really very simple.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文