открытая текстура не сила двух (iphone) - PullRequest
1 голос
/ 15 мая 2011

Я хочу нарисовать текстуру размером 200px (ширина) x 80px (высота) в прямоугольник в openGL (ширина 200px и высота 80px).Поскольку текстуры в openGL ES 1.1 должны иметь мощность два, я хочу загрузить изображение размером 256px x 128px, которое содержит мое исходное изображение размером 200px x 80px в левом верхнем углу, остальное оставлено пустым.Как я могу использовать glTexSubImage2D, чтобы получить эту часть интереса от текстуры 256px x 128px?Я не знаю, как правильно предоставить эту функцию с последним аргументом, который является пикселями.

Кроме того, я прочитал, что мне нужно каким-то образом использовать glPixelStorei?

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

Кстати, я также пытался не использовать glTexSubImage2D, но чтобы настроить TextureCoords между 0 ... 1, ноэто не сработало, эйтер.

1 Ответ

2 голосов
/ 15 мая 2011

Вам неизбежно придется выбрать поддиапазон от 0 до 1 для координат текстуры. Только glTexSubImage2D (пере) определяет часть текстуры, оставляя общие размеры такими, какими они были.

Вычисление правильных значений поддиапазона немного ненормально: скажем, ваша общая текстура имеет ширину 8 пикселей, пиксели 3… 6 имеют фактическое содержимое, а затем карту координат текстуры, как показано ниже:

        2/8             6/8 
 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
 ^                               ^
0.0                             1.0

Итак, используемые текстуры:

(t0 - 1) / N… (t1) / N; t0, t1, N в пикселях.

Если вы хотите адресовать свою подтекстуру в диапазоне 0… 1 по параметру tau , формула будет

ш: = t1 - t0 u = (t0 - 1) / N + w * tau

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...