Каков максимальный размер текстуры OpenGL с текстурами NPOT? - PullRequest
0 голосов
/ 12 сентября 2018

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

glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size, 0);

Я также могу получить максимальный размер буфера текстуры с помощью:

glGetIntegerv(GL_MAX_TEXTURE_BUFFER_SIZE, &size, 0);

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

https://drive.google.com/open?id=1py9l2hEk3-fJzqyMeF6P2ajrNs3CFDFj

Могу ли я превысить GL_MAX_TEXTURE_SIZE, если размер буфера текстуры меньше, чем GL_MAX_TEXTURE_BUFFER_SIZE?Текстуры NPOT, поэтому я задал этот вопрос (поскольку максимальный размер текстуры GL_MAX_TEXTURE_SIZE в квадрате, а текстуры не достигают GL_MAX_TEXTURE_SIZE по оси Y).

РЕДАКТИРОВАТЬ

Чтобы прояснить вопрос, могу ли я создать текстуру, ширина которой> 1022 *, но не высота, а буфер текстур не превышает GL_MAX_TEXTURE_BUFFER_SIZE.Пример:

, если GL_MAX_TEXTURE_SIZE равно 8192, создавая текстуру с размерами 10000 x 40. Она не превышает GL_MAX_TEXTURE_BUFFER_SIZE, что составляет 8192 в квадрате, но превышает боковой максимум.

1 Ответ

0 голосов
/ 13 сентября 2018

GL_MAX_TEXTURE_SIZE определяет размеры 1D и 2D текстур всех форм.Неважно, сколько хранилищ текстуры занимает;это размер его размеров.

GL_MAX_TEXTURE_BUFFER_SIZE также не имеет никакого отношения к размеру хранилища текстуры (не напрямую).Это ограничение на размерность буферной текстуры , которая не является 1D или 2D текстурами.Это имеет значение, только если ваша текстура имеет тип GL_TEXTURE_BUFFER, который отличается от GL_TEXTURE_1D или GL_TEXTURE_2D.

И ни один из этих вопросов не имеет ничего общего с текстурами NPOT.Это просто снятие ограничения на размерность текстуры, являющегося степенью двойки.

...