Hiển thị các bài đăng có nhãn opengl. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn opengl. Hiển thị tất cả bài đăng

22/03/2013

OpenGL blend function

Trước đây làm việc OpenGL mà không hiểu mấy về cái hàm gl.glBlendFunc(a,b). Hôm qua có thời gian ngồi xem tài liệu kỹ lại thì ra là thế này. Gọi D là màu của destination (màu đang có), S là màu source (màu ta cần pha với màu đang có), ta có công thức tính màu sau khi pha như sau:
R = a*S+b*D
Lấy ví dụ: 
  • Nếu a= GL_ONE, b=GL_ONE, S=(1,0,0) (màu đỏ), D=(0,0,1) (xanh da trời). Ta sẽ có R=(1,0,1) (màu đỏ tươi)
  • Nếu a=GL_SRC_ALPHA, b= GL_ONE_MINUS_SRC_ALPHA, S=(0.5,1,0,0), D=(1,0,0,1). Ta sẽ có: 
    • Ra = 0.5*0.5+(1-0.5)*1=0.25+0.5 = 0.75
    • Rr = 0.5*1+(1-0.5)*0 = 0.5
    • Rg = 0.5*0+(1-0.5)*0 = 0
    • Rb = 0.5*0+(1-05)*1 = 0.5
                R = (0.75,0.5,0,0.5)