跨步 Memset

发布于 2024-10-19 09:15:09 字数 197 浏览 1 评论 0原文

使用 OpenGL,很多时候需要在数据上取得进展才能提高效率。例如,内存结构将是顶点-颜色-正常-顶点-颜色-正常..等等。

是否有任何可行的选择可以更改,例如,仅更改具有某种 memset 变体的内存的颜色部分(即,不使用循环)。

也带来了一个问题,是否存在循环内存集之类的东西?例如,在每个由四个浮点组成的颜色数组中,将它们全部设置为特定颜色。

With OpenGL, there's a lot of times where putting strides on the data is necessary for better efficiency. for example, the memory structure would be vertex-color-normal-vertex-color-normal.. etc.

Is there any viable option for changing, say, only the color section of a memory with some kind of memset variant (that is, not using a loop).

Also brings to question, is there such thing as a looping memset? For example, in an array of colors made of four floats each, set all of them to a particular color.

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

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

发布评论

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

评论(2

茶花眉 2024-10-26 09:15:09

只需使用一个循环即可。 memset 没有什么神奇之处,在内部它只是使用一个循环,如果与 0 一起使用,它可能在相同的编译器上进行稍微优化以一次清除 64 位,但它不会在单个指令中设置内存块

Just use a loop. There is nothing magical about memset, internally it is just using a loop, it may on same compilers be slightly optimized to clear 64bits at a time if used with 0, but it doesn't set a block of memory in a single instruction

意中人 2024-10-26 09:15:09

我只想循环。 memset() 做了一些巧妙的小优化,以便每次迭代写入多个字节,因此您可以查看 memset() 本身是如何工作的,并看看这些类型的优化是否适用于您的代码。但最终,这只是一个循环。

这是 memset() 源代码 - 非常可读,尽管您必须挖掘所有 typedef 和宏才能准确了解优化是如何发生的。

I would just go with a loop. memset() does some neat little optimizations to write multiple bytes per iteration, so you might look at how memset() itself is working and see if those kinds of optimizations apply to your code. But in the end, it's just a loop.

Here is the memset() source code - pretty readable, though you'll have to dig up all of the typedefs and macros to see exactly how the optimization is happening.

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