pantalla - mi iphone se puso en negativo
OpenGL ES-Cambia el tono de los colores en la textura (1)
Gracias por la aclaración, estaba lejos de mi comprensión inicial. Tenga en cuenta que la textura que proporciona a OpenGL ES ya tiene un matiz, por lo que lo que está pidiendo es cambiar el matiz existente.
Primero, déjame responder la pregunta tal como se establece:
Comencemos con lo que debe pasarle a los texels. Como las texturas OpenGL se almacenan como RGB, para transformar el tono de un texel, debe ir a RGB-> HSL-> aplicar nuevo tono-> RGB. Puede encontrar las matemáticas reales para hacer la RGB-> HSL y la conversión de vuelta aquí . Cómo desea seleccionar el nuevo matiz, supongo que tendrá que completarlo.
La pregunta más importante es cuándo debe ocurrir la transformación. Bueno, la tubería de OpenGL no le permitirá hacer una transformación tan compleja al leer una textura (no en ES 1.1, de todos modos, los fragment shaders
ES 2.0 ayudarían, pero a un alto costo). Entonces tendrá que hacer todas las transformaciones fuera de la tubería de texturas GL ES. Dependiendo de la frecuencia con la que necesite cambiar los tonos, mi consejo es hacerlo fuera de línea (y almacenar varias texturas temáticas) o calcular nuevas texturas para las nuevas tonalidades a pedido justo antes de cargarlas en OpenGL ES.
Por lo que sé, GL ES 1.1 no tiene ninguna instalación incorporada para ayudar a hacer esto directamente.
Ahora, dando un paso atrás, no estoy seguro de qué es lo que le impide separarse en 2 texturas, si puede vivir con las 2 texturas para aplicar en tiempo de ejecución. La matemática que señalé separa la saturación de la claridad sin importar cómo se generó la textura (y en teoría, el tono debería ser constante, si entiendo tu caso correctamente). Hacer la computación fuera de línea debería ser bastante fácil en cualquier textura de entrada?
Estoy desarrollando un juego 2D simple en OpenGL ES para iPhone. Mi problema es que quiero renderizar una textura con diferentes matices. Básicamente quiero cambiar el tono de los colores en la textura que renderizo. Simplemente cambiar el glColor no funcionará, ya que también afecta las partes de la imagen sin color. ¿Algunas ideas?