Pub*_*bby 1 c opengl alignment padding vertex
我已经读过,如果将顶点数据对齐为32字节,某些图形卡会受益.
这通常涉及添加填充:
typedef struct {
float x, y, z;
int padding[5];
} Vertex;
Run Code Online (Sandbox Code Playgroud)
但我一直想知道,这是否也意味着您应该将数据分配到32字节(malloc对齐为1字节)?意味着指向数据的指针会均匀分配到32?有关系吗?
(我将这些数据上传到VBO)
谢谢
通常,如果源内存对齐(目标通常是),则从客户端内存到VBO的复制操作可以更快.这在某种程度上取决于你如何上传到VBO.
也就是说,上传将是唯一可以通过对齐得到提升的东西.一旦内存在VBO中,那就是重要的VBO服务器内存(你无法控制)的对齐(GL实现知道这一点,并且它们确实调整了VBO内存).
哦,32字节填充20字节不会比16字节填充快16.重要的是你有两个幂的大小,这样一个完整的顶点提取不会跨越高速缓存行.
最后,malloc不对齐1个字节.它至少与基本类型的最小对齐要求一致,在大多数平台上为8.
| 归档时间: |
|
| 查看次数: |
3163 次 |
| 最近记录: |