Я пытаюсь сделать 2D-графику для своего Android-приложения, состоящего из шести тонких прямоугольников, каждая из которых занимает примерно 1/6 экрана по ширине и равна высоте экрана. Я не уверен, как правильно определить границы координатной плоскости x и y OpenGL на экране. В конце концов мне нужно будет написать логику, которая проверяет, какой из 6 прямоугольников имеет событие касания, поэтому я пытался решить эту проблему, переназначив координатную плоскость OpenGL в координатную плоскость экрана устройства (где начало координат (0,0) . в верхнем левом углу экрана вместо серединыПоиск/замена границ координатной плоскости OpenGL ES
Я объявляю одну из моих шести прямоугольников, как так:
private float vertices1[] = {
2.0f, 10.0f, 0.0f, // 0, Top Left
2.0f, -1.0f, 0.0f, // 1, Bottom Left
4.0f, -1.0f, 0.0f, // 2, Bottom Right
4.0f, 10.0f, 0.0f, // 3, Top Right
};
, но так как я не уверен, что видимые пределы на х и у (в системе координат OpenGL) У меня нет конкретного способа узнать, какие вершины нужно создать для моего прямоугольника, чтобы занять 1/6 дисплея. Каков идеальный способ сделать это?
я пробовал подходы, такие как using glOrthoof() переназначить координат OpenGL в в легко работать с экрана устройства координаты:
gl.glViewport(0, 0, width, height);
// Select the projection matrix
gl.glMatrixMode(GL10.GL_PROJECTION);
// Reset the projection matrix
gl.glLoadIdentity();
// Calculate the aspect ratio of the window
GLU.gluPerspective(gl, 45.0f,(float) width/(float) height,0.1f, 100.0f);
gl.glOrthof(0.0f,width,height, 0.0f, -1.0f, 5.0f);
// Select the modelview matrix
gl.glMatrixMode(GL10.GL_MODELVIEW);
// Reset the modelview matrix
gl.glLoadIdentity();
, но когда я делаю прямоугольник полностью пропадает.
Спасибо за ваш ответ! Сейчас я перехожу к GLES 2.0; будут ли два решения, которые вы наметили, одинаковы для GLES 2.0? – Cody