几何着色器是否会影响CPU端最初指定的顶点和索引(GPU内存中的VBO和EBO数据)的缓冲区?例如,假设我有一个包含三个顶点的顶点缓冲区,每个顶点都附加了一些属性。假设这三个顶点被作为输入提供给几何着色器,几何着色器基于它开始时的前三个顶点输出一个大的顶点集,这样就生成了一个由3个以上顶点组成的新多边形。2这个过程会改变元素数组和顶点缓冲区的内容吗?我唯一知道的是,它当然不会被改变。因为否则下一个渲染调用将生成更多的顶点,那将是一团糟。那么OpenGL将新生成的顶点存储在哪里呢?
wwwo4jvm1#
假设将这三个顶点作为输入提供给几何着色器这是不可能的。GS是由顶点着色器的输出提供的。GS从来没有与初始顶点数据有任何直接的联系。那么OpenGL将新生成的顶点存储在哪里呢?在任何需要实现的地方。光栅化硬件通常会有一个小的缓冲区来存储要光栅化的图元数据。这就是GS输出的地方。但这是一个实现细节,没有暴露给OpenGL。
1条答案
按热度按时间wwwo4jvm1#
假设将这三个顶点作为输入提供给几何着色器
这是不可能的。GS是由顶点着色器的输出提供的。GS从来没有与初始顶点数据有任何直接的联系。
那么OpenGL将新生成的顶点存储在哪里呢?
在任何需要实现的地方。光栅化硬件通常会有一个小的缓冲区来存储要光栅化的图元数据。这就是GS输出的地方。
但这是一个实现细节,没有暴露给OpenGL。