Отображение текстур OpenGL ES

Мне нужно нарисовать круги в моем приложении для Android. На самом деле это игра Pacman, и мне нужно рисовать планшеты. Так как на поле много табличек, я решил нарисовать каждую таблетку одним многоугольником.

Вот иллюстрация моей идеи:

http://www.advancedigital.ru/ideal_circle_with_only_one_polygon.jpg

Координаторы вершин:

//  (x, y)
0 : -R, R * (Math.sqrt(2) + 1)
1 : -R, -R
2 : R * (Math.sqrt(2) + 1), -R

Координаты вершин вычисляются относительно центра круга, чтобы потом было легко разместить круги.

Проблема в наложении текстур, по моим расчетам UVs должны быть такими

0 : 0, -(Math.sqrt(2) + 0.5)
1 : 0, 1
2 : 1, (Math.sqrt(2) + 0.5)

Но отрицательное значение V приводит к тому, что приложение показывает только черный экран. Вот почему я думаю, что что-то упускаю или иду неверным путем ...

У меня вопрос: можно ли так рендерить текстуру? Если это невозможно, как лучше всего рисовать маленькие точки?

P.S: Я работаю с OpenGL ES 2.0 на Android.

Мне кажется, что этот парень пытается сделать то же самое.


person Anton Boritskiy    schedule 31.07.2012    source источник
comment
Вы пробовали установить GL_TEXTURE_WRAP_S/T параметры текстуры на GL_CLAMP или GL_CLAMP_TO_EDGE?   -  person Michael    schedule 31.07.2012
comment
Нет, я не пробовал до вашего совета, но это помогло! Напишите, пожалуйста, ответ на вопрос, я приму. Идея состоит в том, чтобы использовать GL_CLAMP_TO_EDGE вместо GL_REPEAT. Обратите внимание, что GL_CLAMP кажется недоступным в OpenGL ES 2.0 или имеет несколько иное значение.   -  person Anton Boritskiy    schedule 01.08.2012
comment
У меня также есть ошибка в координатах UV - пара UV для точки 2: 1, (Math.sqrt (2) + 1.5)   -  person Anton Boritskiy    schedule 01.08.2012


Ответы (1)


Для параметров текстуры GL_TEXTURE_WRAP_S и GL_TEXTURE_WRAP_T по умолчанию установлено значение GL_REPEAT. Вместо этого установите для них GL_CLAMP_TO_EDGE, чтобы получить желаемый эффект (см. документации по glTexParameter)

person Michael    schedule 01.08.2012