Как нарисовать полноэкранный в Android?

1

Я использую opengl es 2.0 на Android 2.2. Моя проблема здесь заключается не в холсте, а в создании полноэкранного андроида, который я уже выяснил.

Мне интересно, как бы вы установили координаты GL_QUAD или 2 GL_TRIANGLES, чтобы полностью покрыть весь экран, например, для использования в качестве текстурирующей поверхности для 2D-игры.

В настоящее время у меня установлен gluPerspective:

float ratio = (float) width / height;
GLU.gluPerspective( gl, 45.0f, ratio, 1.0f, 100.0f );

внутри onSurfaceChanged, поэтому переменные ширины и высоты - это ширина и высота экрана соответственно.

next У меня есть координаты квада как:

public static final float screenVerts[] = {
  -1f, -1f,
   1f, -1f,
   1f,  1f,
  -1f,  1f
};

однако отображаемый четырехугольник не пропорционален экрану, он просто отображается как квадрат, а координаты, по-видимому, относятся к собственной геометрии opengl, а не по высоте/ширине экрана.

как сделать переменную screenVerts, (2D-точки для прямоугольника, на который я рисую), относительно самого экрана? То есть 1.0f - это 100% высоты экрана в Y-координате одной из точек в квадрате.

И я действительно приношу свои извинения за то, что вы не очень хорошо формулируете это, не будет никакого преступления, если мне нужно снова объяснить себя.

Теги:
opengl-es
coordinates
fullscreen

1 ответ

2
Лучший ответ

Вместо этого вы должны настроить матрицу проекции gluOrtho2D. Другое дело, что в OpenGL ES нет GL_QUAD, вам нужно идти на два треугольника. И последний - если вы хотите нарисовать выровненную по оси текстуру, с glDrawTexiOES будет быстрее и проще, если устройство поддерживает OES_draw_texture (который широко поддерживается устройствами Android).

  • 0
    ах, спасибо Я знаю, что opengles поддерживает только треугольники, веерные треугольники и полосовые треугольники, я просто пытался избежать путаницы в том, что конечный продукт, который я хотел, был прямоугольником. Спасибо за вашу помощь, кажется, что люди просто не пишут документацию, как раньше. XD

Ещё вопросы

Сообщество Overcoder
Наверх
Меню