OpenGL и перспектива против размера полигона / модели - PullRequest
0 голосов
/ 22 февраля 2011

Я какое-то время слонялся по OpenGL на Android и чувствую, что смог многое понять.Я работаю из книги "Здравствуйте, Android!"и Android-порт учебника NeHe по трехмерному миру.Самое интересное в том, что оба варианта немного отличаются друг от друга по реализации, поэтому объединение чего-то из обоих было очень забавным.Дело в том, что в учебнике HA вы создаете вращающийся куб и используете очень большие значения int.Куб в основном 65536x65536.Сжатие этих значений значительно сокращает куб.Однако порт NeHe использует гораздо меньшие поплавки.Высота маленького мира составляет всего 6,0, но при взгляде с камеры кажется, что вы ростом около 1,0-2,0.Я сравнил и сопоставил эти два, как сумасшедшие, чтобы попытаться выяснить, как это было сделано, но я пришел пустым.Я могу сказать, что код NeHe ничего не нормальный, в то время как код HA.Он применяет функцию glNormal3f, например, для увеличения больших значений до 1,0,0, а затем строит с TRIANGLE_STRIP, который, по-видимому, является быстрым способом прокачки большого количества геометрии за короткое время.Будучи новичком в OpenGL, я не могу с уверенностью сказать, почему это так, или это облегчает рисование и применение текстур позже.Вероятно, это не связано, но учебник NeHe подает буферы вершин / текстур как GL_FLOAT, а HA - как GL_FIXED.Смена последнего на прежний приводит к большому уродливому планированию.

Я слонялся вокруг с окном просмотра и translatef (который, как положил меня в вращающийся куб), но я не могу понятькак каждый управляет перспективой против размера многоугольников вокруг нее.Может кто-нибудь пролить некоторый свет на это?Спасибо.

1 Ответ

0 голосов
/ 22 февраля 2011

Я не уверен, что это за HA tutorial, но проверьте, используют ли они версии с фиксированной запятой (обычно с суффиксом x вместо f) различных функций ES OpenGL. Если это так, помните, что формат OpenGL ES с фиксированной запятой имеет формат S15.16, поэтому 65536 отображается на 1.0f или около того.

...