2011-05-18 20 views
6

Tôi biết glBlendFunc là lời gọi hàm để chỉ định chế độ hòa trộn pixel.Làm cách nào để kết hợp pixel trong chế độ Màn hình giống như photoshop trong OpenGL?

tôi có thể làm các Multiply Mode như trong Photoshop, trong đó công thức là

C = A * B 

trong đó A là điểm ảnh nguồn, B là các điểm ảnh đích và C là kết quả cuối cùng.

Sử dụng glBlendFunc (GL_DST_COLOR, GL_ZERO) Tôi sẽ nhận được hiệu ứng đó.

Vì vậy, bây giờ câu hỏi của tôi là cách sử dụng Screen Mode? Công thức của nó là:

C = 1 - (1 - A) * (1 - B) 

Trả lời

7

Không kiểm tra, nhưng cách thực hiện như sau.

Việc xây dựng trong tính toán rằng OpenGL không trông giống như:

C = A*s + B*d 

Nơi bạn có thể chọn các s và d.

Một số đại số cho chúng ta

C = 1 - (1 - A) * (1 - B) = 
    = 1 - (1 - B) + A*(1 - B) = 
    = A*(1 - B) + B 

Hãy

s = 1 - B 
d = 1 

và chúng tôi có được giá trị chúng ta muốn. Vì vậy, điều này sẽ hoạt động:

glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ONE); 
+0

Đại số! Tôi hoàn toàn quên điều đó! Cảm ơn, câu trả lời tuyệt vời. – trVoldemort

Các vấn đề liên quan