Я пытаюсь отобразить растровое изображение с использованием opengl, но я не хочу, чтобы отображалась черная часть изображения. Я могу сделать это в DirectX, но не в opengl. Другими словами - у меня есть изображения растений с черным фоном, и я хочу, чтобы растения были нарисованы, чтобы они выглядели реалистично (без черной границы).Отображение изображений без черной части
ответ
Вы можете сделать это с помощью альфа-тестирования:
- Добавить альфа-канал для вашего изображения, прежде чем загружать его в текстуру,
0.0
на черных пикселей и1.0
и везде. - Включить альфа-тестирование с
glEnable(GL_ALPHA_TEST)
glAlphaFunc(GL_LESS, 0.1f)
- Рендер текстурированных четверной как обычно. OpenGL будет пропускать нулевые альфа-тексели благодаря альфа-тесту.
Есть несколько способов, которыми вы можете это сделать.
Одним из них является использование программы редактирования изображений, такой как Photoshop или GIMP, для добавления альфа-канала к вашему изображению, а затем установите черные части изображения на максимальное значение альфа. Поверхность этого заключается в том, что вы можете решить, какие части изображения вы хотите быть прозрачными, поскольку полностью программный подход может иногда скрывать то, что вы хотите видеть.
Другим методом является прохождение каждого пикселя в вашем растровом изображении и установка альфа-функции на основе определенного порогового значения (например, если вы хотите истинный черный, проверьте, соответствует ли каждый цветной канал 255). Недостатком этого является то, что иногда это может привести к исчезновению некоторых ваших линий.
Кроме того, вам необходимо убедиться, что вы фактически активировали альфа-канал и протестировали, как указано в ответе выше. Не забудьте также проверить порядок ваших звонков, так как это может вызвать множество проблем, когда вы пытаетесь использовать прозрачность.
Это примерно столько, сколько я могу предложить, так как вы не разместили сам код, но, надеюсь, этого должно быть достаточно, чтобы по крайней мере получить вас на пути к решению.
Большое спасибо за помощь - я попробую оба метода. Я нахожу opengl намного сложнее в использовании, чем directx. В directX это можно сделать легко, не делая ничего для изображения. Спасибо что нашли время ответить. – carpman
- 1. Как полностью повернуть изображение. без отображения черной части
- 2. отображение изображений в верхней части экрана
- 3. отображение случайных изображений без повторения
- 4. IE Отображение черной границы на кнопке отправки
- 5. Отображение изображений в Mosaic «без дыр»
- 6. Отображение изображений в .Net без сбоев Приложение
- 7. CSS: Отображение/масштабирование изображений без испорчения пропорций?
- 8. Отображение изображений без блокировки «основной» нити
- 9. Отображение изображений и текста без пробелов
- 10. Отображение изображений в цикле без вмешательства пользователя
- 11. Отображение изображений
- 12. Отображение изображений
- 13. 2 Одновременное отображение изображений
- 14. Отображение 3 изображений подряд
- 15. ALAsset thumbnail без внутренней черной полупрозрачной рамки
- 16. Отображение изображений iPhone
- 17. Отображение части конфигурации (--Подробнее)
- 18. Отображение части JSON файла
- 19. Отображение изображений в сетке
- 20. Вырезать прозрачные части изображений
- 21. Загрузка NIB делает панель состояния полностью черной и остается черной
- 22. Скрытие и отображение изображений onload
- 23. Java: Чтение изображений и отображение изображений ImageIcon
- 24. Отображение изображений PHP-таблица Mysql
- 25. Отображение отдельных изображений или отображение фрагментов коллажа изображений?
- 26. Тип ввода = «текст»: отображение правой части содержимого без rtl
- 27. Отображение изображений в Gridview
- 28. Отображение изображений по горизонтали
- 29. отображение изображений в слайдере
- 30. отображение blob изображений - symfony
'glAlphaFunc' - это устаревшая функция. (см. http://stackoverflow.com/a/16077657/1418097) –
Спасибо за ответ. Opengl кажется так трудно подать в суд, по сравнению с directX! Я вернусь и отправлю сообщение, когда еще немного поработаю. – carpman
@ user3265957: Я не знаю, я считаю, что Хронос будет меньше/проще, чем Microsoft. – genpfault