基本的なOpenGLプログラムのどこでシェーダーが実行されるかを理解しようとしています。シェーダープログラムがビデオカードで実行されていることはわかっているので、メインループと並行していると思います。しかし、私は2つの間のリンクがどこで発生するかを理解したいと思います。これが私の描画関数です:
void Draw(ESContext *esContext)
{
GLfloat vVertices[] = {0.0f, 0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f};
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vVertices);
glEnableVertexAttribArray(0);
glDrawArrays(GL_TRIANGLES, 0, 3);
eglSwapBuffers(esContext->eglDisplay, esContext->eglSurface);
}
glDrawArraysが呼び出された直後に、シェーダープログラムが初めて実行されますか?また、メインループが数ミリ秒間停止した場合でも、同じ3つの頂点をループして処理し続けるのでしょうか。つまり、ビデオカードは新しい命令を受け取るまでこれらの3つの頂点をループして処理し続けるのでしょうか、それとも一度処理してからglDrawArraysまたは同様のコマンドからの別の呼び出しを待つのでしょうか。