По сути, у меня есть цветовая матрица, определенная так:
struct ColourXForm
{
float4 mul;
float4 add;
float4 Transform(float4 colour)
{
return float4(
colour.x * mul.x + add.x,
colour.y * mul.y + add.y,
colour.z * mul.z + add.z,
colour.w * mul.w + add.w);
}
}
То, что я хочу сделать, - это применить функцию «Преобразовать» к каждому пикселю в текстуре, когда она отображается на экране. Я не могу на самом деле изменить текстуру, так как различные матрицы преобразования цвета могут быть применены к одному и тому же изображению несколько раз в кадре (и я не знаю, что будет применено, пока не придет время визуализации текстуры), и я могу Также не используйте шейдеры.
Есть ли способ сделать это с учетом этих требований? (моя единственная идея на данный момент - это мультитекстурирование, но я не могу понять, как его применить)
Кроме того, я новичок в OpenGL, поэтому было бы полезно также опубликовать некоторый код или указать мне учебник или даже необходимые функции / параметры.
Спасибо
Edit: еще одна вещь, которую я должен упомянуть, это то, что текстура содержит предварительно умноженную альфа, поэтому смешивание настроено как glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);