1

使用 OpenGL,很多时候需要在数据上大步前进以提高效率。例如,内存结构将是 vertex-color-normal-vertex-color-normal.. 等。

是否有任何可行的选择来改变,比如说,只用某种 memset 变体(即不使用循环)改变内存的颜色部分。

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

4

2 回答 2

2

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

于 2011-02-28T04:31:34.353 回答
1

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

这是 memset()源代码- 非常易读,但您必须挖掘所有类型定义和宏才能确切了解优化是如何发生的。

于 2011-02-28T05:58:28.993 回答