При попытке смоделировать 3D планету с различными уровнями детализации получаю следующее:
сфера радиусом 6700 единиц, естественно, разделена по quadTree, хотя не суть важно. Таким образом, поверхность земли находится примерно на расстоянии 6700 от центра СК, и чем ближе камера приближена к поверхности, тем больше "трясутся" вершины, что вызвано потерей точности при построении матрицы MVP, так как позиция камеры и объектов основаны на больших значениях.
Чтобы избежать этого, пробовал перед генерацией Model и View матриц делать предварительный offset позиций на позицию камеры. То есть View камеры будет как будто в (0,0,0), а позиция других мешей в (позиция меша.xyz - позиция камеры.xyz), но в таком случае при каждом кадре приходится перегенерировать Model матрицы(да и лишние операции усложняют структуру) для каждого меша, а это слишком затратно при их большом количестве.
Есть ли какие-либо хаки, чтобы чтобы устранить проблему, и не прибегать к таким затратным операциям на каждый кадр?
Виталий Столяров: почему же. В контрибьютерах указан "Bruce Merry, ARM". Минимальная версия OpenGL ES 3.0
Если производитель предоставил в драйверах это расширение, то пользуйтесь, пожалуйста.