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