- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下问题(还没有代码):
我们有一个 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 :
关于c++ - 声学数据高度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17359098/
我是一名优秀的程序员,十分优秀!