Estoy tratando de dibujar primitivas semitransparentes (líneas, círculos) en OpenGL ES utilizando Cocos2d pero no puedo evitar las regiones de solapamiento visibles. Alguien sabe cómo resolver esto?OpenGL, primitivas con opacidad sin superposición visible
Respuesta
Este es un problema que generalmente se encuentra con bastante frecuencia, incluso en 3D.
No estoy muy familiarizado con Cocos2D, pero una forma de resolver esto en OpenGL genérico es llenar el framebuffer con su canal alfa deseado, cambiar el modo de fusión a glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA)
y dibujar los rectángulos. La idea detrás de esto es dibujar un rectángulo con la transparencia deseada que se toma del framebuffer, pero en la máscara de progreso se dibuja el área para que los rectángulos subsiguientes se oculten allí.
Otro enfoque es convertir todo en una textura o ensamblar la forma con polígonos que no se superponen.
no estoy seguro de si es compatible con Cocos2D cualquiera de estos ...
No sé qué capacidades específicamente Cocos2d proporciona, pero puedo ver dos opciones,
Uno, no se superponen así, pero en lugar de construir una geometría más compleja, de modo que cada píxel solo se cubra una vez,
Dos, utilice la memoria intermedia de estarcido para crear una máscara mientras dibuja, y para rechazar los píxeles que ya están enmascarados.
- 1. agregando superposición negra con 0.3 opacidad sobre UIImageView
- 2. Primitivas negativas sin signo?
- 3. control de opacidad de la superposición de tramas
- 4. TreeForm sin superposición
- 5. Cambiar la opacidad de la textura en OpenGL
- 6. ¿Cómo representa las primitivas como wireframes en OpenGL?
- 7. ¿Cómo configuro la opacidad de un vértice en OpenGL?
- 8. Inicializando OpenGL sin GLUT
- 9. Representación de objetos translúcidos superpuestos sin superposición de oscurecimiento
- 10. Jquery/Javascript Animación de opacidad con desplazamiento
- 11. superposición de OpenGL en vista de la cámara
- 12. Tinte de imagen usando CSS sin superposición
- 13. Máscaras alfa con OpenGL
- 14. UIImagePickerController sin superposición en la vista previa
- 15. OpenGL sin una tarjeta gráfica
- 16. OpenGL sin X.org en Linux
- 17. CSS flotante con superposición
- 18. Ayuda con superposición JFreeChart
- 19. Cambiar la opacidad del fondo sin cambiar la opacidad del contenido
- 20. opengl - mezcla con contenido anterior de framebuffer
- 21. ¿Aprendizaje de OpenGL sin GLUT?
- 22. Java: ¿Sincronización en primitivas?
- 23. Modo de fusión de Photoshop con OpenGL ES sin sombreadores
- 24. CSS3 ¿Opacidad del borde?
- 25. Superposición de imagen con matriz
- 26. Tipos estructurales y primitivas
- 27. Primitivas personalizadas en C#?
- 28. Android glSurfaceView con superposición utilizando XML/Java
- 29. Opacidad sombra de texto
- 30. Primitivas Json no válidas
Sí, exactamente eso. Fyi puedes cambiar la función de mezcla en el sprite con la propiedad blendfunc. es decir 'mysprite.blendFunc = (ccBlendFunc) {GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA};' –