у меня было трудное время с общей системой координат в первом тоже.
Что я делаю, что имеет для меня больше смысла, работает с системами координат OpenGL, как если бы я работал с реальными объектами в реальной системе координат мира.
То, что я сделал, я принял план ТАРДИС (из телешоу «Доктор Кто»), который имел размеры для создания синей коробки в дюймах и футах.
Оттуда я взял систему координат GL, и для каждого блока «1» GL я сделал эквивалент «1» или 12 дюймов.
И, основываясь на 0,0,0, являющемся центральной точкой моего ТАРДИС, я просто протянул ТАРДИС через код, как я увидел на чертеже, переводя точные размеры из того, что я увидел на чертеже.
Вот небольшой пример того, что я сделал:
glBegin(GL_QUADS);
glNormal3f(1.0f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(15.0f/12.0f, myTop, 2.0f-(ONEINCH*0.25f));
glTexCoord2f(0.0f, 1.0f); glVertex3f(3.25f/12.0f, myTop, 2.0f-(ONEINCH*0.25f));
glTexCoord2f(1.0f, 1.0f); glVertex3f(3.25f/12.0f, myTop-(14.5f/12.0f), 2.0f - (ONEINCH*0.25f));
glTexCoord2f(1.0f, 0.0f); glVertex3f(15.0f/12.0f, myTop-(14.5f/12.0f), 2.0f - (ONEINCH*0.25f));
glEnd();
Первое, что я узнал в этом упражнении является - единицы GL являются универсальными единицами. Поэтому, применяя систему, с которой я больше знаком - ноги и дюймы, сделал намного проще сосредоточиться на GL, а не на том, что означает эта единица?
После того, как я начал рисовать, я смог работать с gluPerspective гораздо эффективнее, что помогло мне понять разрешение видового экрана (не путать с разрешением экрана), ТОЛЬКО нужно иметь дело один раз, и именно тогда gluPerspective команда (следующий)
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,250.0f);
так, чтобы ответить на ваш вопрос: Там нет максимумов для значений с плавающей точкой, только уровней точности поплавка вы имеете дело с.
Например, в моем примере, показанном выше, я очень сильно закрываю видовое окно (0.1 GL Unit, что составляет 1,2 дюйма) и задает расстояние до 250 GL uint или 250 футов на расстоянии.
Я думаю, что отчасти это было связано с OpenGL. Это универсальные устройства, потому что трехмерный дизайн делает гораздо больше смысла, если у вас есть система реального мира, чтобы снова измерить ее.
Мой совет: не думайте, что блоки GL имеют ограничения или ограничения, кроме степеней ошибки, связанных с неточностями с плавающей запятой в малых и больших масштабах.
Фактически, я советую сравнить его с единицами реального мира. Я работаю в футах и дюймах. Метрическая система и счетчики довольно распространены. Если это не сработает для вас, сделайте это так.
Вот TARDIS я построил: https://universalbri.wordpress.com/2015/05/24/creators-journal-holodeck-management-system-progress-10/
Я работаю над игрой со всем этим, Star Trek Online без боя и сейчас делает работу базы данных (SQL Server), то OpenGL была часть вопроса : Могу ли я перевернуть свой собственный движок, а не использовать кого-то другого.
Ответ: Да, я могу, и на самом деле это предпочтительнее.
Успехов
Я до сих пор есть сомнения: - 1) Я поставил windowSize, как 400 х 400. Но все же координаты не в диапазоне от -200 до 200. Почему? Мне нужно подробное руководство относительно того, как происходит материал внутри. Любые ссылки? – clereamusjd
@clereamusjd: Посмотрите мою первую ссылку, в которой описывается контур фиксированной функции, который вы, вероятно, используете. И пока вы не устанавливаете какие-либо матрицы, это диапазон от -1 до 1, который отображает любой размер окна, который вы используете. – datenwolf
Я не читал страницу, которую вы дали, но я думаю, что сужу сомнение. В образце кода у меня есть линия gluPerspective (45.0, width/height, 1.0, 200.0); Когда я удалил эту строку, координаты x, y действительно изменились от -1 до 1. Также с помощью gluPerspective, мне нужно поставить z-координату как отрицательную. 0.0 не работает. Любая помощь приветствуется. – clereamusjd