Here’s the relationship between ogl modulating modes and java2d compositing rules:
{
{ GL_ZERO, GL_ZERO }, /* 0 - Nothing */
{ GL_ZERO, GL_ZERO }, /* 1 - RULE_Clear */
{ GL_ONE, GL_ZERO }, /* 2 - RULE_Src */
{ GL_ONE, GL_ONE_MINUS_SRC_ALPHA }, /* 3 - RULE_SrcOver */
{ GL_ONE_MINUS_DST_ALPHA, GL_ONE }, /* 4 - RULE_DstOver */
{ GL_DST_ALPHA, GL_ZERO }, /* 5 - RULE_SrcIn */
{ GL_ZERO, GL_SRC_ALPHA }, /* 6 - RULE_DstIn */
{ GL_ONE_MINUS_DST_ALPHA, GL_ZERO }, /* 7 - RULE_SrcOut */
{ GL_ZERO, GL_ONE_MINUS_SRC_ALPHA }, /* 8 - RULE_DstOut */
{ GL_ZERO, GL_ONE }, /* 9 - RULE_Dst */
{ GL_DST_ALPHA, GL_ONE_MINUS_SRC_ALPHA }, /*10 - RULE_SrcAtop */
{ GL_ONE_MINUS_DST_ALPHA, GL_SRC_ALPHA }, /*11 - RULE_DstAtop */
{ GL_ONE_MINUS_DST_ALPHA, GL_ONE_MINUS_SRC_ALPHA }, /*12 - RULE_AlphaXor*/
}
Note that these assume that the source is alpha-premultiplied.
Does this answer your question?