使用OpenGL,很多时候需要在数据方面取得进展才能提高效率。例如,内存结构将是顶点颜色 - 正常 - 顶点 - 颜色 - 正常等等。
是否有任何可行的选项可以更改,例如,只使用某种memset变体(即不使用循环)更改内存的颜色部分。
还有问题,是否存在循环memset这样的事情?例如,在由四个浮点数组成的颜色数组中,将它们全部设置为特定颜色。
答案 0 :(得分:2)
只需使用循环。 memset没有什么神奇之处,在内部它只是使用一个循环,它可能在同一个编译器上稍微优化,如果与0一起使用,一次清除64位,但它不会在单个指令中设置一块内存
答案 1 :(得分:1)
我会选择循环。 memset()做了一些简洁的小优化,每次迭代写多个字节,所以你可以看看memset()本身是如何工作的,看看这些优化是否适用于你的代码。但最后,它只是一个循环。
这是memset()source code - 非常易读,但你必须挖掘所有的typedef和宏,以确切了解优化的发生方式。