几何着色器是否修改CPU指定的VBO与EBO?生成顶点存储在哪?
几何着色器对VBO/EBO的影响及新顶点存储位置
几何着色器不会修改CPU最初指定的VBO(顶点缓冲区)和EBO(索引缓冲区)内容。这些缓冲区属于GPU上的持久化存储,只有通过
glBufferSubData这类显式修改缓冲区的API,才能改动它们的原始数据,渲染流水线的任何阶段(包括几何着色器)都不会主动修改这些缓冲区。针对你提到的场景:输入3个顶点后几何着色器输出大量新顶点,这些新顶点是临时生成的,完全不会写入原VBO/EBO。这也是重复渲染调用不会导致顶点数量持续增长的原因——每次渲染时,几何着色器都是基于原始VBO的顶点重新计算输出,不会累积修改原有数据。
这些临时生成的顶点会被存储在GPU的内部临时显存缓存/暂存区,仅用于当前渲染批次的后续阶段(比如光栅化)。当前渲染批次完成后,这些临时数据会被GPU自动回收,不会持久化保留。如果需要保存这些生成的顶点,你需要使用**变换反馈(Transform Feedback)**技术,显式将几何着色器的输出写入到指定的缓冲区对象中,才能持久化存储这些数据供后续使用。
内容的提问来源于stack exchange,提问作者gmmk
相关产品推荐
相关产品推荐

