OpenGL: допустимо ли работать с текстурами размером 2500 * 2500 пикселей? - PullRequest
2 голосов
/ 18 августа 2010

Конечно, текстура не будет полностью видна на экране. И я могу сделать так, чтобы он всегда рисовал только видимую часть (с glTexCoord2f и затем glVertex2f). (Это большой «уровень» -изображения, который мне нужно передвигать для раздвижной камеры). Обратите внимание, что в моей игре этот рендеринг должен выполняться в режиме реального времени (игра написана на C++).

Краткий расчет:

2,500 * 2,500 = 6,250,000 pixels
6,250,000 pixels * 4 bytes / pixel = 25,000,000 bytes
25,000,000 bytes = 23.8 MiB

Итак, 23.8 MiB не слишком много для кроссплатформенной коммерческой игры? Зная, что люди могут иметь все виды графических карт.

Ответы [ 2 ]

3 голосов
/ 18 августа 2010

Это много для одной текстуры. Не должно быть слишком большой проблемы, если у видеокарты достаточно памяти, чтобы держать ее на борту (не менее 32 МБ, а это если у вас больше ничего нет в игре! На самом деле более разумно 128 МБ), но если этого не произойдет, то система должна будет вставлять биты в видеокарту каждый кадр, пока он находится на экране. Это может вызвать значительное замедление.

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

1 голос
/ 18 августа 2010

Я считаю, что карты, поддерживающие SM3, гарантируют, что текстуры 4Kx4K будут работать (хотя не могу найти подтверждение).

Карты, которые поддерживают DX10 , гарантируют работу текстур 8Kx8k.

Как уже говорили другие, предпочтительнее использовать мощность двух текстур.

И последнее, но не менее важное: максимальный размер связан не только с используемой памятью, он имеет прямое влияние с той точностью, с которой аппаратное обеспечение должнообработать текстурные координаты.Так как DX10, например, требует, чтобы вы имели доступ к 6 битам точности суб-текселей, аппаратное обеспечение должно обрабатывать координаты текстуры в формате, который может адресовать 19 = 13 (для 8k текселей) +6 бит (для адресации суб-текселей) (игнорируя режим повторного переноса на данный момент).

...