Представьте себе следующую ситуацию: у вас есть набор символов справки RPG в формате PNG и вы хотите использовать их в приложении OpenGL.Spritesheets OpenGL - новичкам нужно руководствоваться
Отдельные символы (обычно) размером от 16 до 24 пикселей (то есть 24 пиксела высотой) и могут иметь любую ширину и высоту, не оставляя отступы. Вроде как это:
Terra, from Final Fantasy VI http://helmet.kafuka.org/terra.net/nomura/Terra.png
У меня уже есть код, чтобы определить целое на основе прямоугольника отсечения заданного индекса и размера кадра:
int framesPerRow = sheet.Width/cellWidth;
int framesPerColumn = sheet.Height/cellHeight;
framesTotal = framesPerRow * framesPerColumn;
int left = frameIndex % framesPerRow;
int top = frameIndex/framesPerRow;
//Clipping rect's width and height are obviously cellWidth and cellHeight.
Выполнение этого кода с frameIndex = 11, cellWidth = 16, cellHeight = 24
возвратит cliprect (32, 24)-(48, 48)
предполагая, что это правая/нижняя противоположность ширине/высоте.
Фактический вопрос
Теперь, учитывая прямоугольник отсечения и X/Y координат поместить спрайт на, как я рисую это в OpenGL? Предпочтительно иметь нулевую координату в верхнем верхнем.
Возникает вопрос, как извлечь и отобрать конкретный спрайт? Непонятно, что вы подразумеваете под ничью. –
Если вы делаете это на телефоне, вы можете ограничить opengl, где текстуры должны быть мощностью 2. Вы также можете сэкономить место, имея отдельную верхнюю/нижнюю половину каждого символьного изображения - это похоже на вас есть много поз, где только голова/ноги различаются. –
Dana: в значительной степени это, да. mgb: Я не делаю этого по телефону. – Kawa