¿No estás matando moscas a cañonazos?
Yo haría lo siguiente: suponiendo que cada widget tuyo tiene una textura asociada, simplemente miraría el color del píxel que ha sido pinchado dentro de la textura (si la textura tiene canal alfa y está siendo usado, miraría ahí). Si es cero, es un hueco y por tanto no ha sido pinchado. Así te evitas renderizar los widgets dos veces y trastear con el backbuffer.
Ésto sólo es válido si tus widgets están hechos a base de texturas. Si los dibujas "a mano" (con líneas o algo así) entonces seguramente habría que hacer lo que dices tú.
Yo haría lo siguiente: suponiendo que cada widget tuyo tiene una textura asociada, simplemente miraría el color del píxel que ha sido pinchado dentro de la textura (si la textura tiene canal alfa y está siendo usado, miraría ahí). Si es cero, es un hueco y por tanto no ha sido pinchado. Así te evitas renderizar los widgets dos veces y trastear con el backbuffer.
Ésto sólo es válido si tus widgets están hechos a base de texturas. Si los dibujas "a mano" (con líneas o algo así) entonces seguramente habría que hacer lo que dices tú.