Я делаю проект с большим количеством вычислений, и у меня есть идея - бросить кусочки работы на GPU, но мне интересно, можем ли мы получить результаты от GLSL, если это возможно, как?Как мы можем получить значение переменной из GLSL?
ответ
В общем, вы хотите использовать OpenCL для задач GPU общего назначения. Однако, если вы настаиваете на том, чтобы сделать вид, что OpenGL не является API-интерфейсом ...
Framebuffer Objects сделать его относительно простым для отображения на нескольких выходах. Это, конечно, означает, что вам нужно структурировать свою обработку таким образом, чтобы то, что получается, соответствовало тому, что вы хотите. Вы можете отображать 32-битные «образы» с плавающей запятой, поэтому у вас есть доступ к множеству точности. Самая большая трудность заключается в том, что я сказал: выяснение того, как структурировать свою задачу в соответствии с рендерингом.
Это немного проще при использовании обратной связи преобразования. Это возможность записывать выходные данные шейдерной обработки вершины (или геометрии) в buffer object. Это по-прежнему требует структурирования ваших задач во что-то вроде рендеринга, но это проще, потому что вершинные шейдеры имеют строгий одно вертекс-один-вершинный сопоставление. Для каждой входной вершины имеется ровно один вывод. И если вы нарисуете GL_POINTS
, не так уж сложно использовать атрибуты для передачи данных, которые меняются.
Как проще, так и проще использовать shader_image_load_store. Это фактически способность читать/писать с/на произвольные изображения «всякий раз, когда вы хотите». Я поставил эту последнюю часть в кавычки, потому что существует множество эзотерических правил относительно условий гонки данных: чтение из значения, написанного другим вызовом шейдера и т. Д. Это не тривиально иметь дело. Вы можете попытаться структурировать свой код, чтобы избежать их, не записывая одно и то же изображение в том же шейдере. Но во многих случаях, если вы могли бы это сделать, вы могли бы просто визуализировать фреймбуфер.
В конечном счете, на этот вопрос в общем случае невозможно ответить на этот вопрос, не зная, что именно точно, которое вы пытаетесь на самом деле сделать. Как вы подходите к GPGPU через API-интерфейс рендеринга, в значительной степени зависит от того, что вы пытаетесь вычислить.
- 1. Интервью: В javascript, как мы можем получить предыдущее значение переменной?
- 2. Как мы можем получить значение в переменной php из переменной javascript
- 3. Можем ли мы установить значение элемента управления из переменной
- 4. Как мы можем получить значение из свойств DOM в JMeter?
- 5. как мы можем получить изображение из локального?
- 6. Как мы можем сохранить значение глобальной переменной в транспортимере?
- 7. JQuery: Как мы можем фильтровать int из переменной
- 8. Можем ли мы получить возвращаемое значение PHP-файла из ASP.NET?
- 9. Как мы можем получить доступ к переменной php get?
- 10. Как мы можем получить значение поля, генерируемое компилятором, отражением?
- 11. можем ли мы получить значение хэша на serveride php?
- 12. Как мы можем получить значение json array в Ajax
- 13. Как мы можем получить абсолютное значение в MongoDB
- 14. Как мы можем получить значение json-кода в jQuery
- 15. Как мы можем передать значение aspx странице с страницы asp
- 16. мы можем использовать структуры для униформы в GLSL-ES
- 17. как мы можем сериализовать singleton? Я думаю, мы не можем
- 18. как мы можем получить комментарии к фото
- 19. Как мы можем получить размер границы окна?
- 20. Можем ли мы изменить значение ключа Json?
- 21. Как мы можем получить unicode из идентификатора глифа в python?
- 22. Как мы можем преобразовать значение из TPenstyle в строку
- 23. Как мы можем получить дерево синтаксиса TypeScript?
- 24. Как мы можем получить уведомление с томом
- 25. Как мы можем получить диапазон чисел
- 26. C++: значение из переменной как переменной
- 27. Как мы можем установить значение DateTime в требуемом формате?
- 28. Можем ли мы получить значение Oracle с кавычками
- 29. Как мы можем получить выбранные значения проверки из DataTable
- 30. Как мы можем получить список сокетов из функции select()?
GLSL не используется для программирования GPU общего назначения, поскольку для этой цели были разработаны аппаратные и программные интерфейсы. Если вам не нужно программировать GPU более 6 лет, это, вероятно, не вопрос, который вы хотите. – Potatoswatter