iphone opengl-es cocos2d-iphone

iphone - Representación de objetos translúcidos superpuestos sin superposición de oscurecimiento



opengl-es cocos2d-iphone (1)

No estoy seguro de si hay un nombre para esto, pero esencialmente lo que tengo que hacer es tomar dos sprites opacos, dibujarlos a ambos con un 50% de opacidad, y donde se superponen, no lo hacen parecer más oscuro.

Imagen de ejemplo http://i45.tinypic.com/n35281.gif

La imagen de la izquierda es cómo se representa originalmente. Luego, quiero disminuir el alfa del renderizado, y de manera predeterminada, obtengo la imagen en el medio, pero quiero obtener la imagen a la derecha.

Estoy usando cocos2d en el iPhone y ahora estoy renderizando los sprites usando un Administrador de sprites Atlas, que no tiene su propia alfa, así que he intentado disminuir el alfa disminuyendo el alfa de cada sprite individualmente y también disminuyendo el alfa de la imagen fuente, ninguno de los cuales realmente esperaba que funcionara.

¿Hay algún modo de fusión que pueda habilitar, o alguna forma (rápida) de renderizar la imagen completamente opaca en un buffer secundario y luego disminuir la opacidad del buffer antes de mezclarlo con el buffer principal?


AFAIK no hay una forma fácil de solucionar esto. Las alternativas que puedo pensar son:

  1. Modifique la geometría para que los objetos no se superpongan (más difícil de codificar, pero el rendimiento más alto).
  2. Render los objetos a una textura a plena opacidad, luego renderizar esa mezcla alfa.
  3. Use un buffer de estarcido (si iPhone admite memorias intermedias de esténcil que sospecho que no). Comience con la plantilla configurada en ceros, configúrelo para escribir un 1 cuando dibuje sus polis translúcidos y configure la condición para dibujar solo el fragmento si el buffer es 0.