2014-02-16 6 views
0

Я пытаюсь рисовать прямоугольники с определенным расстоянием по оси х друг к другу. Расстояние от каждого прямоугольника должна бытьAndroid OpenGL ES 2.0 Расчет расстояния по разрешению экрана

(screen width - rectangle width) 

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

Проблема в том, что я не мог понять, как рассчитать соотношение ширины моего прямоугольника и ширины экрана. Мои прямоугольные вершины

final float[] rectangleVerticesData = { 
     // X, Y, Z 
     -1.0f, 2.0f, 0.0f,    
     -1.0f, -2.0f, 0.0f,    
     1.0f, 2.0f, 0.0f,    
     -1.0f, -2.0f, 0.0f,    
     1.0f, -2.0f, 0.0f,    
     1.0f, 2.0f, 0.0f 
}; 

На основании выше, моя ширина прямоугольника равна 2. Я использую таблетки с 1280 пикселей в ширину. Используя приведенную выше формулу, я получил

1280 - 2 = 1278

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

Когда я пробовал дистанционное кодирование до 10, прямоугольники отображаются с таким расстоянием. Я думаю, что 1278 так долго будет расстоянием между ними. Как я могу рассчитать правильное расстояние между треугольниками на основе ширины экрана, чтобы только один прямоугольник мог быть полностью отображен за раз на экране? Любая помощь будет принята с благодарностью. Спасибо.

ответ

1

В OpenGL экран рассматривается как квадрат нормализованного размера, то есть он простирается от вершины (-1, -1) до вершины (+ 1, + 1). Вход вершины, заданный OpenGL для рисования, не изменяется в соответствии с размером пикселя экрана, но преобразуется внутренне для рисования на фактический размер экрана. Поскольку существует множество устройств с разным размером экрана, чтобы код GL работал на всех устройствах без размеров экрана жесткого диска, это необходимо.

Таким образом, вам придется соответствующим образом масштабировать свои расчеты.

+0

Спасибо @prabindh за ваш ответ. Наверное, мне нужно больше поэкспериментировать о том, как рассчитать это. – xp15

Смежные вопросы