, пожалуйста, рассмотрите следующую проблему.
У вас есть простая коробка и изображение, показанное внутри.
У вас также есть две текстуры, один красной и зеленый один ...
Вы инициализировать использованный texure из зеленой текстуры ...
Вашего окна отображает без изменений используемой текстуры на первом:
Как сохранить текстуру в фрагменте шейдера
Затененный круг вокруг вашей мыши, чтобы отобразить часть текстуры.
При нажатии кнопки мыши, заштрихованные области изменяются в красной текстуры,
, как показано ниже:
До сих пор так хорошо. Тем не менее, я искал довольно много, но я не могу
найти способ сохранения результата из фрагментарного шейдера до отображения
, используемой текстуры. Общая операция суммировалась бы до формы
смесь первой и второй текстур.
Вот мой отношение пиксельный шейдер:
#version 120
uniform sampler2D red_texture, used_texture;
uniform bool isMouseClicked;
uniform float mousex, mousey;
uniform float radius; //the radius of the painting circle
void shadePixel(){ ... }
void main(){
//calculate the distance from mouse origin
float distance = sqrt(pow((gl_FragCoord.x - mousex), 2) + pow((gl_FragCoord.y - mousey), 2));
if(distance<=radius && isMouseClicked){
//used_texture <- red_tuxture
}
if(distance<=radius) shadePixel(); //make circle bound visible
else gl_FragColor = texture2D(used_texture, gl_TexCoord[0].xy);
}
Я хотел бы, чтобы позже получить текстуру таранить и сохранить на диск в виде изображения.
Итак, есть ли способ манипулировать текстурой через шейдер фрагмента?
Спасибо заранее.
Спасибо, но я надеялся сделать это через шейдер. Вы знаете, что это возможно? –
@FrustratedSoul: вы можете сделать это с помощью вычислительного шейдера и «imageStore» на новом оборудовании.Но я не вижу причин не использовать аппаратное обеспечение, которое можно смешать с помощью рендеринга-текстуры, как описано Вагнером. – ybungalobill
", но я надеялся сделать это через шейдер:« Ну, вы вычисляете свой образ (или все, что хотите вычислить), используя шейдер фрагмента и выводя его в текстуру, я действительно не понимаю, почему вы не в порядке с этим решением – Zouch