Я делаю игру в 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();
}
Заранее спасибо!