#iphone #image #opengl-es #background
#iPhone #изображение #opengl-es #предыстория
Вопрос:
Я хочу взять изображение в формате png и использовать его в качестве фона для моего GLView. Я слышал, что glDrawTex * был лучшим способом, но я поискал в Интернете и не нашел ни одного примера того, как его использовать (по крайней мере, ни одного, который сработал для меня). Любая помощь?
Ответ №1:
Хотя расширение OES_draw_texture является достаточно хорошим способом рисования фона, потому что иногда это может быть немного быстрее, чем использование геометрии, я бы рекомендовал не использовать его слишком интенсивно на том основании, что iPhone не реализует его в ES 2, и вы не хотите загонять себя в угол.
При этом, что-то вроде:
int sourceRect[4] = {0, 24, 8, 16}; // we'll use the rectangle from (0, 24) of
// size (8, 16) in the texture or textures
// that are currently active as the
// source graphic...
// ... by saying as much to OpenGL
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, sourceRect);
// we'll then draw that at (x, y), with nominal depth z, so as
// to cover the screen area (width, height)
glDrawTexiOES(x, y, z, width, height);
Должно быть правильным.
Комментарии:
1. Спасибо за помощь. Я пробовал, но у меня просто белый экран. Что такое ‘rect’ в вашем коде. Это должно быть ‘sourceRect’? Моя текстура представляет собой файл pvrtc размером 512×512. Какие значения я должен ввести для sourceRect? Какие значения я должен ввести для glDrawTexiOES? Используется ли этот код в моей функции рисования? Если да, то где? Моя текущая функция рисования выглядит следующим образом: — (void) Draw { glClear …; glLoadIdentity(); glTranslate(0, 0, -2.4); glDrawElements …; }
2. Неважно. Я неправильно настроил свою текстуру. Теперь у меня это работает.
3. Большое вам спасибо, вы получите действительно грубое поведение, если попытаетесь использовать glDrawTexiOES () без настройки параметров, как вы предлагаете.