Лучший способ получить доступ к пикселю в OpenGL?

Azure Monitor теперь поддерживает мониторинг службы контейнера Azure (AKS). Вы можете увидеть Microsoft.ContainerService / managedClusters , который Azure Monitor поддерживает для AKS. Кроме того, вы можете получить все службы, которые поддерживают метрики, с помощью Azure Monitor .

7
задан cletus 19 January 2009 в 02:46
поделиться

2 ответа

glReadPixels является способом пойти.

Да, это медленно - ужасный медленный. Но это - способ, которым это. Дубликаты DirectX (например, блокировка и чтение пикселей) не намного быстрее также.

В целом Вы не хотите читать назад пиксели и делать что-то с ЦП на данных. Можно сделать вполне немного обработки с помощью пиксельных шейдеров, но это не поможет Вам, если Вы захотите сделать снимки экрана (где данные должны закончиться в ЦП).

6
ответ дан 6 December 2019 в 21:21
поделиться

Лучшая идея состояла бы в том, чтобы рассматривать память кадрового буфера на видеокарте как только для записи. Я думаю, что причина состоит в том, что видеопамять оптимизирована для записи из стороны ЦП, за счет чтения. (Очевидно видеопамять может быть считана быстро со стороны видеокарты - она должна отправить его на монитор в режиме реального времени),

Быстрое решение будет зависеть от того, что Вы пытаетесь сделать (хотите уточнить?).

Нет ничего останавливающего Вас сохраняющий Ваш собственный кадровый буфер в оперативной памяти, затем копируя это в структуру каждый кадр и представляя его в OpenGL. Я сделал это прежде, и это намного быстрее, чем glReadPixels, однако Вы теряете способность считать назад результаты другого действия рендеринга OpenGL. Используйте это, если все, что необходимо сделать, является содержанием покадровое состояние части сцены. например: Генерация динамической структуры, что наклон быть сделанным с помощью пиксельного шейдера.

Можно также смочь сойти с рук чтение назад намного меньшего набора данных. Я сделал это, когда я играл вокруг с нереалистическим рендерингом. Я взял свою сцену, представил ее в 160x120, считайте тот назад в оперативную память, затем повторно представьте ее как набор 2D спрайтов.

0
ответ дан 6 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: