У меня есть программа, в которой я использую шейдерную программу для визуализации текстуры, прикрепленной к FBO, затем изменяю параметры программы (изменяя значения униформы) и визуализируя вторую текстуру после прикрепляя его к FBO. Затем два визуализированных изображения используются для создания третьего.Последовательность выполнения для команд OpenGL
Я не уверен, что результаты, которые я получаю, верны. Я понимаю, что графический процессор будет свободен в выборе времени, в которое будет выполняться команда OpenGL. Но это не должно быть проблемой, если порядок выполнения соответствует последовательности, в которой команды отображаются в коде. Это на самом деле?
Дальнейший вопрос. Мне нужно сохранить сгенерированные кадры на диск. Я знаю, как это сделать. Но я должен убедиться, что GPU завершил рендеринг, прежде чем делать это. Как я могу обеспечить это?
Это будет работать, если вы никогда не попробуете пробовать из той же текстуры, в которую вы рисуете (что создаст обратные петли). И вообще то, что вы описываете, не проблема, некоторые новые вещи, которые были введены в GL4, такие как загрузка/хранение изображений, бросают много всего этого на голову, но вы должны притворяться, что я никогда не упоминал об этом и не паниковал по падающему небу:) –
@ AndonM.Coleman Спасибо Ando. Именно об этом я и не так уверен. Шаги, которые я следую, - это те, о которых я упоминаю в комментарии к пользователю user1781290. Я использую одну шейдерную программу при рисовании на первые две текстуры и вторую шейдерную программу для рисования третьей текстуры. Во все времена есть только один FBO. Я только изменяю прикрепленную текстуру на каждом этапе. Я также попытался добавить 'glFinish()', но у меня все еще есть эта проблема несоответствия, о которой я упоминаю в своем втором комментарии к ответу user1781290. – informer2000