gpt4 book ai didi

c++ - 声学数据高度图

转载 作者:行者123 更新时间:2023-11-30 04:17:01 27 4
gpt4 key购买 nike

我有以下问题(还没有代码):

我们有一个 4000 x 256 的数据集,分辨率为 16 位,我需要编写一个程序来显示这些数据。我想使用 DirectX 或 OpenGL 来这样做,但我不知道正确的方法是什么。

我是创建一个包含 4000 x 256 个三角形且分辨率为 y 轴的缓冲区,还是继续创建一个四边形然后使用曲面 segmentation 处理数据?

我什么时候会在曲面 segmentation 上使用大顶点缓冲区,反之亦然?

最佳答案

这真的取决于很多因素。您想要渲染大约 100 万像素\顶点的 map 。根据您的硬件,这可以通过最直接的技术来实现。

我能想到 3 种技术:

1) 创建一个 4000x256 顶点的网格,并根据数据的高度图图像设置它们的高度。您在创建时设置一次数据。着色器将只绘制静态缓冲区并将单个变换矩阵(世界\ View \投影)应用于所有顶点。

2) 创建一个高度为 0 的 4000x256 顶点网格,并通过采样的高度图数据在顶点着色器内平移每个顶点的高度。

3) 与 2) 相同,只是添加了 segmentation 阶段。

进行 segmentation 的优点是您可以使用较小的顶点缓冲区,并且可以在运行时动态 segmentation 。这意味着您可以使网格的一部分更加 segmentation ,而一部分则更加 segmentation 。例如,您可能只想在用户查看网格的地方进行更多 segmentation 。

顺便说一句,您不能将一个四边形 segmentation 为一百万个四边形,单个四边形可以 segmentation 多少是有限制的。但是您可以对它进行很多镶嵌,无论如何您将获得减小网格大小的几个因素。

如果您从未使用过 DirectX 或 OpenGL,我会选择 1。看看它是否足够快,只有当它不够快时才使用 2,最后转到 3。

您了解 3D 图形渲染背后的理论并不意味着您可以轻松学习 DirectX 或 OpenGL。它们很难理解和学习,因为它们作为 API 非常复杂。

如果您愿意,可以看一下我使用 DirectX11 所做的一些曲面 segmentation :

http://pompidev.net/2012/09/25/tessellation-simplified/

http://pompidev.net/2012/09/29/tessellation-update/

关于c++ - 声学数据高度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17359098/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com