【发布时间】:2023-03-17 23:50:02
【问题描述】:
我正在编写一个 opengl 应用程序,对于顶点、法线和颜色,我使用单独的缓冲区,如下所示:
GLuint vertex_buffer, normal_buffer, color_buffer;
我的主管告诉我,如果我定义这样的结构:
struct vertex {
glm::vec3 pos;
glm::vec3 normal;
glm::vec3 color;
};
GLuint vertex_buffer;
然后定义这些顶点的缓冲区,我的应用程序会变得更快,因为当位置被缓存时,法线和颜色将在缓存行中。
我认为定义这样的结构不会对性能产生太大影响,因为像结构一样定义顶点会导致缓存线中的顶点更少,同时将它们定义为单独的缓冲区,将导致有 3 个不同的缓存线用于缓存中的位置、法线和颜色。所以,什么都没有改变。真的吗?
【问题讨论】: