2016-05-29 2 views
0

Я хотел бы изменить экран, который я вижу с помощью вычислительного шейдера, не вызывая вершинный/фрагментный шейдер. Вычислительный шейдер будет использовать данные, и я хотел бы знать, как вызывать эти данные из вычислительного шейдера. Итак, как мне это сделать?Open gl compute shader and framebuffer

+0

FYI: Если вы изучаете OpenGL, вычислительные шейдеры, вероятно, * не * место для начала. –

+0

Я не изучаю opengl с целью узнать opengl, я просто хочу узнать конкретные части opengl с целью решить мою проблему. –

ответ

4

Вычислительные шейдеры могут обращаться только к изображениям или буферам. default framebuffer не является ни тем, ни другим; это особый объект, и вы не можете прикреплять его изображения к чему-либо.

Вы можете создать текстуру, привязать ее к use as an image с помощью вычислительного шейдера и выполнить любые вычисления, которые вы хотите на нем. Вы можете (после the appropriate glMemoryBarrier call, конечно) сделать это изображение стандартным фреймбуффером.

+0

Итак, мы не можем получить доступ к фреймбуферу по умолчанию с помощью вычислительного шейдера, надеюсь, что-то ясное, спасибо вы. Вы сказали, что вычислительные шейдеры могут обращаться к буферам так, просто присваивая именам или подсказкам функций, как вы создаете буфер для вычислительного шейдера, как вы загружаете буфер с данными клиента, как вы RW данные в вычислительном шейдере и, наконец, как вы извлекаете данные для клиента. –

+0

@AndreMiville: Это целая серия вопросов, и они не имеют ничего общего с вашим оригинальным. Это сайт вопросов и ответов, а не форум. Поэтому, если вы хотите получить ответы на эти вопросы, вам придется задавать их как отдельные вопросы. –

+0

Я не могу, я ограничен одним вопросом в неделю. Я был ограничен, потому что я жаловался на то, что я не мог проголосовать за полезные ответы (для этого нужно 15 очков репутаций (эта система делает s * u * c * k)). Но я думаю, что смогу ответить на эти вопросы. –

Смежные вопросы