簡體   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