gpt4 book ai didi

c++ - GLSL - 何时何地调用顶点和片段?

转载 作者:行者123 更新时间:2023-11-30 01:53:20 25 4
gpt4 key购买 nike

我想知道在 opengl 循环中究竟何时调用了顶点和片段着色器。它是在 glutDisplayFunc() 或 glutMainLoop() 的末尾,还是在每个顶点绘制调用中?顶点和片段是一个接一个地连续调用(即:顶点然后片段),还是完全不同的时间?

假设我有以下代码片段:

glPushMatrix();
glRotatef(rot,0.0f,1.0f,0.0);
glTranslatef(0.0f,0.0f,25);
glColor3f(0.0,0.0,1.0);
drawSphere(4,20,20); // draw triangles

glColor3f(1.0,0.0,0.0);
glTranslatef(0.0f,0.0f,5);
drawSphere(4,20,20); // draw triangles
glPopMatrix();

是否在每次调用顶点后调用顶点着色器,然后读取堆栈顶部的当前矩阵,然后将预定义的 ModelView 矩阵统一发送到顶点着色器?片段着色器何时运行?

最佳答案

Is it at the end of your glutDisplayFunc() or glutMainLoop(),

都不是,因为 GLUT 不是 OpenGL 的一部分。它只是一些库(用于创建简单的 OpenGL 应用程序)。

or is it at every vertex draw call?

从程序员的角度来看,它并没有具体说明具体发生的时间。 OpenGL 有一个命令队列,并且断言在它们进入命令队列并到达所谓的“同步点”之间要处理的事情。同步点是在 OpenGL 上下文之外使用或传输数据的任何命令(如使用 glReadPixels 读取的图像),由以前的 OpenGL 命令生成。

对于所有实际方法,您可以假设一旦指定了整个基元,顶点和片段就会得到处理。因此,如果您绘制三角形,那么每获得 3 个顶点,您就需要绘制一个三角形并开始处理它。

关于c++ - GLSL - 何时何地调用顶点和片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23216513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com