2012-02-17 4 views
0

У меня есть программа, где я сделать две текстуры, которые связаны с некоторыми полигонов и добавить результаты с помощью этого:PyOpenGL изменение яркости текстур

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD) 

Это работает хорошо и быстро, но я хотел бы способ изменить яркость каждой текстуры перед их добавлением, например, значение усиления. Это значение необходимо изменить во время выполнения, поэтому я не могу просто испечь свою яркость в своей текстуре.

Также характер моей программы означает, что я не буду знать, сколько текстур я буду смешивать до выполнения, поэтому мне нужно решение, которое будет работать с n текстурами.

Кто-нибудь знает, как я это сделаю?

ответ

0

Если вы можете использовать фрагментарные шейдеры, вы должны написать код в шейдере фрагмента, который изменяет яркость с параметром шейдера, через которое проходит ваше приложение. Такой подход будет быстрым и гибким.

+0

Возможно ли иметь произвольное количество текстур в шейдере фрагмента, я спрашиваю, потому что я не знаю, сколько текстур я хочу смешивать до выполнения, jt –

+0

Также я определенно могу «использовать» фрагментарные шейдеры, у меня есть никаких ограничений, я просто не знаю, как еще :) –

+0

Существует два подхода к рендерингу нескольких текстур на поверхностях с использованием OpenGL 1. Multi-pass - визуализировать объект несколько раз с различными текстурами. Это легко, но менее результативно. Это также не зависит от аппаратных возможностей. Используйте это, когда опция 2 ограничивает вас. 2. Мультитекстурирование - зависит от того, сколько текстурных единиц может одновременно поддерживать ваше оборудование. Это быстро, и большинство аппаратных средств поддерживает 8+ текстур за раз. – Ani

Смежные вопросы