Как использовать glDrawTex*

#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 () без настройки параметров, как вы предлагаете.