кроме модификации проекционной матрицы? Есть ли варианты?
Сейчас у меня Zoom делается так:
Проблема в том, что при таком Zoom'е в GL на границе Z-Буфера возникает лесенка:
Интерполяция не достаточно точная.
В софтрендере из-за 64-битной точности такого глюка нет.
Добавь отдельную матрицу для масштабирования
eDmk
Депс рэйнж тоже надо зумить, чтоб небыло таких проблем.
Ну и проверку глубины лучше выставить в LESS_EQUAL, вместо LESS.
eDmk
> кроме модификации проекционной матрицы? Есть ли варианты?
> Сейчас у меня Zoom делается так:
Движением мира вместо скейла в проекции, не?
Или, как вариант, крутить фов.
nonamezerox
> Движением мира вместо скейла в проекции, не?
>
>
В софтрендере у меня своя проекция и там как раз Zoom и работает. Проблем нет.
В OpenGL проекция зарыта. Модификация PM-матрицы дает эффект лесенки.
Это ошибка из-за недостатка точности при интерполяции. Если брать числа одинарной точности,
то она как раз и возникает. При Double такого нет. FOV у меня как раз через проекционную матрицу и модифицируется. Получается «лесенка». Помогает только уменьшение объектов.
Т.е. смещение размеров объектов в диапазон [0..1].
eDmk
Депс рейнж масштабируй пропорционально зуму.
nes
> Депс рейнж масштабируй
Как!? Он всегда [0..1].
eDmk
> Как!? Он всегда [0..1].
glDepthRange
Тема в архиве.