首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >GPU颗粒元曲面绘制

GPU颗粒元曲面绘制
EN

Stack Overflow用户
提问于 2014-05-22 01:43:00
回答 1查看 1.1K关注 0票数 1

我有一个关于如何渲染表面粒子的非常具体的方法的问题。该方法在Nvidia GPU Gems 3第7章“GPU上基于点的元数据可视化”( 链接到本章 )中得到了很好的解释。

本文是关于使用均匀分布在表面上的点或碎片来绘制隐式曲面。他们说这些粒子的计算完全是在GPU上完成的。只有定义表面的数据从CPU发送到GPU,以保持尽可能低的流量。

他们还给出了一些伪代码示例片段着色程序来计算粒子的位置、速度等,对我来说,这些程序应该对每个粒子运行一次。

现在我的问题是,它们是如何储存这些粒子的?它是什么样的数据结构?它必须是某种类型的缓冲区或纹理,可以用来读取和写入GPU上的操作。但是,如何在下一个呈现步骤中再次呈现此缓冲区/纹理?

我的第一个想法是某种顶点缓冲区对象,它在开始时发送到GPU一次,并在每次呈现过程中不断更新。有可能吗?

我的一个要求是它必须用OpenGL/GLSL来实现,我希望这是可能的。

EN

回答 1

Stack Overflow用户

发布于 2014-05-22 03:48:28

是的,您需要某种VBO并重复传递相同的数据。数据结构可以是SoA (数组结构)或AoS ( structure ),这取决于您喜欢如何编码对数组不同属性的访问,即:

SoA:

  • 位置阵列
  • 速度阵列
  • 法线阵

AoS:

  • 只有一个阵列包含位置,速度,正常。 AoS和交错数组一样用于呈现,其中只有一个数组保留了网格的所有属性。

您可以使用VBO或纹理,唯一的区别是缓存的方式,因为纹理是为2D访问优化的。

呈现是按步骤进行的,就像您想象的那样,所以您所需要做的就是使用着色器“呈现”系统的物理步进,这些着色器计算您想要的属性,然后将相同的结构绑定到后续步骤中的真实图形呈现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23803151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文