首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectCompute原子计数器

DirectCompute原子计数器
EN

Stack Overflow用户
提问于 2015-02-21 05:44:56
回答 1查看 3.2K关注 0票数 7

在一个计算着色器(使用Unity)中,我有一个光线投射来寻找与网格三角形的交点。在某种程度上,我想返回找到了多少个交叉点。

我可以通过标记像素清楚地看到有多少个交叉点,但是如果我简单地为计算着色器中的每个交叉点增加一个全局int (并通过缓冲区返回),我得到的数字就没有意义了。我认为这是因为我创建了一个竞态条件。

我看到opengl有“原子计数器”:https://www.opengl.org/wiki/Atomic_Counter,这似乎就是我在这种情况下需要的。我在Unity和DirectCompute文档中都没有找到这样的功能。有什么好方法可以做到这一点吗?

我可以创建一个appendBuffer,但这看起来很愚蠢,因为我只需要返回一个int。

EN

回答 1

Stack Overflow用户

发布于 2015-02-21 06:09:27

哈!这很简单。我把这个留在这里,以防有人遇到同样的问题。HLSL有一整套“互锁”函数来防止这类事情的发生:

https://msdn.microsoft.com/en-us/library/windows/desktop/ff476334(v=vs.85).aspx

在我的例子中是:

代码语言:javascript
复制
InterlockedAdd(collisionCount, 1);

替换

代码语言:javascript
复制
collisionCount++;

就是这样!

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

https://stackoverflow.com/questions/28638762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档