繁体   English   中英

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

[英]GLSL - When and where is the vertex and fragment called?

我想知道何时在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矩阵发送给顶点着色器? 片段着色器何时运行?

是在glutDisplayFunc()或glutMainLoop()的末尾,

两者都不是,因为GLUT 属于OpenGL。 这只是一个库(用于创建简单的OpenGL应用程序)。

还是在每个顶点绘制调用中?

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

对于所有实际手段,您都可以假定一旦指定了整个图元,就可以处理顶点和片段。 因此,如果您绘制三角形,那么每得到3个顶点,您便会绘制一个三角形,然后开始处理它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM