Правильные расчеты поплавков в OpenGL ES - PullRequest
0 голосов
/ 01 декабря 2010

Я делаю игру в 3D.В моем коде все правильно, хотя меня смущает одна вещь.

Когда я настраиваю свою перспективу (gluPerspective), я устанавливаю ее на zNear = 0.1f и zFar = 100.0f.Все идет нормально.Теперь я также хочу переместить вещи только в направлении x или y через glTranslate....Но оригами начинается в абсолютном центре моего экрана.Как у меня zFar и zNear, почему это не соответствует координатам x и y?Теперь это похоже на то, как если бы я переместил свой спрайт -2.0f влево по оси x и сделал glTranslate..., чтобы справиться с этим, он почти исчез из экрана.И ось Z не ведет себя так.Это значительно усложняет обработку расчетов по всем направлениям.Довольно сложно добавить уникальное значение с плавающей точкой к объекту, и сейчас я просто добавляю их случайным образом, чтобы они оставались внутри экрана.

Итак, у меня проблема с вычислением корректирует значение для каждого объекта.Я что-то пропустил?Должен ли я что-то изменить или придумать?Причина, по которой это важно, заключается в том, что мне нужно знать абсолютную левую и правую часть моего экрана для выполнения этих вычислений.

Это мой onSurfaceChanged:

public void onSurfaceChanged(GL10 gl, int width, int height) {
   gl.glViewport(0, 0, width, height); 
   gl.glMatrixMode(GL10.GL_PROJECTION);
   gl.glLoadIdentity(); 
   GLU.gluPerspective(gl, 45.0f, (float)width / (float)height,
                          0.1f, 100.0f);
   gl.glMatrixMode(GL10.GL_MODELVIEW);
   gl.glLoadIdentity();
}

Заранее спасибо!

1 Ответ

1 голос
/ 01 декабря 2010

Когда вы используете gluPerspective, вы преобразуете свои координаты из трехмерного мирового пространства в двухмерное экранное пространство, используя матрицу, которая по умолчанию смотрит на (0,0,0) (то есть x = 0, y = 0 находится в центре экран). Когда вы устанавливаете координаты вашего объекта, вы делаете это в мировом пространстве, а НЕ на экране.

Если вы хотите эффективно делать 2D-графику (где вещи имеют координаты, соответствующие их положению на экране, вы хотите использовать gluOrtho2D вместо этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...