2017-01-27 10 views
0

У меня есть дилемма. Я читал, что во многих местах текстура не должна быть больше 1024x1024 пикселей, потому что некоторые графические процессоры не поддерживают большие размеры.Использование фреймбуфера для постобработки: может ли текстура быть размером экрана?

Но если я хочу визуализировать фреймбуфер, то мне нужно создать текстуру с размером экрана, которая в настоящее время обычно больше 1024x1024, даже на мобильных телефонах.

Гарантировано, что я могу безопасно создавать текстуры размера собственного разрешения экрана устройства?

Если для этого нет «стандартного», то другая формулировка вопроса: часто случается, что разработчики игр создают текстуры размером с экран? (Потому что тогда производители вынуждены поддерживать этот размер текстуры.)

+1

Где вы читали? Действительно, все графические процессоры имеют определенный размер текстуры, с которыми они могут справиться, но насколько я знаю, это в диапазоне 8K на современных настольных графических процессорах. В конечном итоге это сводится к тому, что вы хотите настроить для своего приложения, и где вы помещаете линию того оборудования, которое хотите поддерживать. – Bartvbl

+0

Посмотрите так: может ли GPU выделять свой собственный фреймбуфер, если он не поддерживает текстуры такого размера? Так что распределение фреймбуфера с размером вашего экрана не должно быть проблемой, насколько я могу судить. В любом случае вы можете использовать 'glGetIntegerv (GL_MAX_TEXTURE_SIZE)', чтобы узнать, какой размер наибольшей текстуры поддерживается вашим GPU. – Bartvbl

+0

@Bartvbl: Было бы более убедительно, если бы кто-то сказал, что «я нахожусь в отрасли в течение X столетий, и каждый это делает». :) Итак, вы говорите, что нет другого способа технически? Как рендеринг на нескольких текстурах? –

ответ

1

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

Эти два показывают, что еще чуть-чуть больше, в возрасте видеокарты вполне способен обрабатывать 4096x4096 текстуры:

http://store.steampowered.com/hwsurvey

http://feedback.wildfiregames.com/report/opengl/feature/GL_MAX_TEXTURE_SIZE

Мобильная сцена гораздо сложнее, потому что это более фрагментированным. Однако ARM Mali GPU очень популярен. Модель с 2008 также поддерживает 4096x4096 текстур:

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka13314.html

+0

Спасибо за расследование, дал upvote, но я буду ждать и других ответов. Потому что мои вопросы не были специфичными для устройства, потому что сравнение с их собственным разрешением экрана на экране. Если ваши рассуждения о вложениях буфера были правильными, я бы согласился с этим. –

+1

Как они могут быть не конкретными устройствами? Глядя на то, какое оборудование используется на рынке _is_, как разработчики принимают эти решения.Спецификация OpenGL не дает никаких гарантий относительно максимального размера текстуры, поддерживаемого реализацией, поэтому единственное, что вы можете сделать - это посмотреть спецификации оборудования. – Bartvbl

+0

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