У меня есть панель здоровья, которая представляет собой два GL_QUADS, отображаемых с одинаковой координатой z, один красный и один зеленый (зеленый цвет является сектором здоровья, оставшимся.) Однако я просто понимаю, что только 1 GL_QUAD будут видны, если обе они отображаются в одном и том же положении. Есть ли способ изменить цвет раздела одного GL_QUAD?Несколько GL_QUADS в том же месте
ответ
Там это способ изменить один
GL_QUAD
«s окраску, хотя вы не хотите, чтобы сделать это. Это предполагает скользящую текстуру на ней, меняя координаты текстуры. Не очень умный.Вместо этого вы должны выбрать два квадроцикла, размеры которых зависят от здоровья. Вы захотите использовать линейную интерполяцию (LERP), чтобы найти край, где начинается один четвертый конец и один квад.
Вот математике псевдокод, предполагая, что ваш бар здоровья горизонтальный
Quad_1.x start = 0
Quad_1.x end = X%
Quad_2.x start = X%
Quad_2.x end = 1
Quad_1
заканчивает тем, что имел X% площади, и Quad_2
заканчивается, имеющий (1-Х)% площади. Они оба всегда будут занимать 100% площади, и вы можете легко масштабировать ее до любого размера. Просто убедитесь, что у вас нет отрицательного здоровья или более 100% здоровья, испортившего ваш рисунок.
Примечание: GL_QUADS
является старым и устаревшим. Используйте GL_TRIANGLES
, или GL_TRIANGLE_STRIP
, если вы в эффективности (подмигивание).
Альтернативные методы:
- Вы можете генерировать фантазии процедурный 2D изображение и использовать его в качестве текстуры карты, которые затем можно использовать для текстурирования один четверной. Вы можете начать с того, что ваша карта текстур будет простой скользящей планкой, основанной на приведенном выше объяснении, но оттуда вы можете сделать это фантазией
- Вы могли бы, как указывали Xonar и Armin Rigo, помешать значению Z. Хотя, если вы сделаете это как специальное исправление, это может привести к большим трудностям в работе.
Я не думаю, что вы должны испортить значение z (это требует артефактов по краям). Я думал больше рисовать зеленый, затем красный с глубиной тестирования, но без рисования в буфер глубины. Затем нарисуйте красный с рисунком в буфер глубины, но не на экран, чтобы получить правильное тестирование глубины, чтобы затем не нарисовать его, если что-то не находится перед ним. – Xonar
- 1. CSS: сохранить несколько элементов в одном и том же месте
- 2. Как удалить несколько контактов в одном и том же месте
- 3. Несколько аннотаций (MKAnnotationView) в том же месте Координаты
- 4. Установите несколько версий Eclipse в одном и том же месте
- 5. OptaPlanner развернуть несколько транспортных средств в том же месте
- 6. Несколько изготовителей в одном и том же месте с лифтом
- 7. Повторить PHP Включить в том же месте
- 8. Сделать абзацы абзаца в том же месте
- 9. Malloc в том же месте кучи?
- 10. Элементы затухания в том же месте
- 11. Кэширование Chartboost межстраничное в том же месте
- 12. Показать/скрыть пробел в том же месте
- 13. Отладка отладки Android в том же месте
- 14. Вопросы для отображения в том же месте
- 15. Два указателя в том же месте?
- 16. HTML: Текст на том же месте
- 17. Собирание команд в одном и том же месте в трубе
- 18. Как сделать несколько шаблонов в одном и том же месте несколько раз?
- 19. Сохраняйте все элементы в одном и том же месте
- 20. Выполнение .msi из командного файла в том же месте
- 21. Состояние GL_QUADS не поддерживает несколько glBindTexture?
- 22. Добавление виджетов в QGridLayout в том же месте в Qt?
- 23. Показать/скрыть данные в divs в том же месте?
- 24. Все заголовки разделов в uitableview находятся в том же месте
- 25. Все изображения загружаются в том же месте в ListView
- 26. Создания пребывания изображения в DIV в том же месте
- 27. Сохранение файла в том же месте в приложении macOS
- 28. запятая не в том месте
- 29. Больше одного маркера на том же месте - MarkerClusterer
- 30. Несколько Графы() в том же запросе
Вы можете играть с использованием zbuffer, чтобы получить этот эффект, но гораздо проще просто нарисовать красный бит только там, где есть здоровье. Также GL_QUADS устарели. – Xonar
Или визуализируйте зеленый бит с немного другой координатой z так, чтобы она слегка показалась спереди. –
@ Xonar Я полагаю, что это имеет смысл, хорошо знать! Я знаю, что «GL_QUADS» устарели, просто возитесь со старым OpenGL, пока я не получу его :) – Fitzy