Я пытаюсь отобразить модель в OpenGL. Я нахожусь в День 4 из C++ и OpenGL (да, я узнал это быстро), и я немного остановлюсь с текстурами.Как сделать свой объект прозрачным, но все же показать текстуру?
У меня возникли проблемы с созданием текстуры альфа-работы. На этом изображении у меня есть этот персонаж из Spiral Knights. Как вы можете видеть на макушке, есть эти белые части.
Я получил Смешивание включен и моя функция смеси установлена на glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Что я предполагаю, что здесь, и вот почему я задаю этот вопрос, является то, что прозрачность текстуры является рабочей, но треугольники позади текстуры все еще отображаются.
Как сделать эти треугольники невидимыми, но все еще показывать мою текстуру?
Спасибо.
Threre не являются «треугольниками за текстурами». GL не рисует текстуры, он рисует примитивы. Совершенно неясно, что именно происходит (то, что akoha ценит вашу текстуру, как вы комбинируете текстуру с окончательным цветом фрагмента и т. Д.). Вы также должны знать, что для смешивания потребуется рисовать примитивы в правильном порядке. В этом конкретном случае вы даже можете обойти это, не используя смешение, а просто отбросив на основе альфы. – derhass
Вы говорите «просто отбрасывая на основе альфы». _ - Я провел некоторое исследование по отбрасыванию и тому подобное, но из того, что я прочитал, он может быть медленным. Есть альтернативный метод? Я сделал несколько поисковых запросов для альтернативных методов и включил альфа-тестирование, а затем установил альфа-функцию в 'glAlphaFunc (GL_GREATER, 0.0);' но это, похоже, не работает. –
альфа-тест устарел. современный подход отбрасывается в шейдере. что «медленный» действительно означает в этом контексте, трудно сказать заранее. вы можете вернуться к тесту на позднюю глубину, и вы получите определенную степень неравномерного потока управления. Однако вы получаете независимость заказа взамен. – derhass