Лица нарисованы, чтобы они определены. Теперь, когда куб повернут, порядок рисования не изменяется. Сначала некоторые лица рисуются ближе к камере. Затем после этого нарисовано какое-то лицо, но Z-тест говорит, что пиксель ближе к камере, поэтому рисование не требуется.
Проблема заключается в том, что OpenGL | ES 2.0 не сортирует грани при их рендеринге. Правильность работы с прозрачностью и глубиной остается реальной проблемой в 3D-программировании, но для этого удобного случая вы можете просто сортировать лица спереди. Рисование назад называется «алгоритмом Живописца», а сортировка называется «сортировка по глубине» или «z-сортировка».
Простые, определенно не лучший и, безусловно, неэффективный способ может работать следующим образом:
- Calculate центр вершина лицо путем вычисления среднего из трех вершин
- проекта их экранного пространства, превращая их через камера (вид + проекция) и возможные модели-матрицы
- Сортировка их значений Z по некотором алгоритму сортировки
- Построить буфер вершин с вершинами в этом порядке или просто переписать индекс буфера в новом порядке (меньше материала, чтобы передвигаться, если вершины не изменяется)
- Рендер куб как обычно
Есть более эффективные способы справиться с этой проблемой и там все виды продвинутых оптимизаций там. Но я не нашел никакого учебника, чтобы охватить простой случай, подобный этому. Возможно, я просто не нашел правильных ключевых слов.
Спасибо за ответ. Попробуй это – user359103