Tôi đang học OpenGL ES 2.0 và tôi muốn tạo một Ứng dụng để hiểu rõ hơn cách hoạt động của nó. Ứng dụng có một bộ lọc mà người dùng có thể áp dụng trên hình ảnh (tôi biết, không có gì mới: P).Hình ảnh và mặt nạ trong OpenGL ES 2.0
Một trong những bộ lọc này có hai hình ảnh và một mặt nạ và nó pha trộn hai hình ảnh cho thấy chúng thông qua các mặt nạ (ở đây một hình ảnh để giải thích rõ hơn những gì tôi muốn để có được)
Tại thời điểm này Tôi thực sự bối rối và tôi không biết bắt đầu từ đâu để tạo hiệu ứng này. Tôi không thể hiểu được thời tiết tôi phải làm việc với nhiều họa tiết và nhiều FrameBuffers hoặc tôi chỉ có thể làm việc với một trình đổ bóng đơn.
Bạn có gợi ý nào để giúp tôi thực hiện dự án này không?
EDIT --------
tôi đã tìm thấy giải pháp này, nhưng khi tôi sử dụng như dòng mặt nạ thay vì vòng tròn kết quả là thực sự "grungy", đặc biệt là nếu dòng được luân chuyển.
precision highp float;
varying vec4 FragColor;
varying highp vec2 TexCoordOut;
uniform sampler2D textureA;
uniform sampler2D textureB;
uniform sampler2D mask;
void main(void){
vec4 mask_color = texture2D(mask, TexCoordOut);
if (mask_color.a > 0.0){
gl_FragColor = texture2D(textureA, TexCoordOut);
}else {
gl_FragColor = texture2D(textureB, TexCoordOut);
}
}
Có thể sử dụng bộ đệm hoặc pha trộn của Stencil tốt hơn?
BTW, bạn không phải sử dụng kênh alpha ('mask_color.a') cho mặt nạ. Bạn có thể sử dụng bất kỳ kênh 'r',' g', 'b' khác và cách này bạn sẽ lưu bộ nhớ GPU bằng cách sử dụng kết cấu mặt nạ với kênh alpha. – keaukraine
@MatterGoal Có thể bạn có thể trả lời câu hỏi này, http://stackoverflow.com/questions/24486729/uiimage-masking-with-gesture –