2016-01-27 3 views
1

Допустим, есть одна текстура: 6000x6000OpenGL: размытие только одной части текстуры; может ли использование вершинного шейдера ускорить?

Мне нужно только, чтобы размыть одну часть, скажем, центральный прямоугольник 100х100

Если я использую вершинный шейдер поставить заинтересованную область этого центра прямоугольника, введя координаты 4 точек и соответствующие им координаты текстуры в большой текстуре, я думаю, что фрагментарный шейдер обрабатывает только пиксели в центральном прямоугольнике.

В моем понимании, обычный графический процессор не может обрабатывать одновременно 6000x6000 пикселей; он будет разделен на несколько сегментов. Теперь с 100x100 все пиксели могут обрабатываться одновременно, поэтому они будут быстрее.

Правильно ли я понимаю?

ответ

1

Вы можете сделать «отрисовку к текстуре», чтобы вы могли использовать свой «вершинный шейдер», чтобы выбрать область, которую вы хотите размыть ... а затем ваш фрагментарный шейдер применит размытие только в этой области.

Ваше понимание кажется правильным: считайте, что графический процессор будет тратить средства на обработку фрагментов ВНУТРИ области, определенной вашим вершинным шейдером, поэтому, если вы установите свою вершину подмножеством вашей цели [точно так же, как на экране, ваш цель может быть текстурой, через фреймбуферы], то ваш GPU будет обрабатывать только желаемую область.

+0

Спасибо. Является ли все мое понимание в вопросе правильным? Вы сказали, что мое понимание правильное? – user1914692

+0

Да, если мое понимание о вашем понимании правильное, да ... ваше понимание правильное –

+0

, то знаете ли вы, сколько пикселей можно обрабатывать одновременно в GPU с использованием OpenGL? Не могли бы вы дать мне ссылки на некоторые источники? Благодарю. – user1914692