Estoy intentando volver a escribir el código Apple Sample GLCameraRipple, con la imagen como fondo. En realidad estoy tratando de crear un efecto dominó en la imagen del agua usando este código, pero el código está funcionando para la cámara. En su lugar, solo quiero usar una imagen de agua simple como fondo en lugar de cámara. Cualquier dirección o código de muestra será de gran ayuda. Gracias por adelantado.¿Cómo puedo reescribir la muestra GLCameraRipple con Imagen como fondo?
Respuesta
La forma en que funciona el efecto de ondulación de la cámara es deformar las coordenadas de la textura en una cuadrícula de triángulos, por lo que la buena noticia es que el efecto que desea es bastante independiente de la textura del video; su textura resulta ser un video. Para lograr lo que quieres, todo lo que tienes que hacer es eliminar todo el código de video de la cámara y vincular tu propia textura.
Así que en viewDidLoad, que te comente [self setupAVCapture]
, y seguir adelante y comente las dos uniformes en textura SetupGL, ya que sólo se va a utilizar una (las dos líneas son glUniform1i(uniforms[UNIFORM_Y], 0);
, glUniform1i(uniforms[UNIFORM_UV], 1);
), y luego crear & se unen a su propia textura.
GLKit es la manera más rápida de hacer algo como esto. GLKit oculta muchas de las llamadas de función OpenGL de usted, pero es muy rápido & efectivo.
//create the GLKTextureInfo object
NSError *error;
NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:GLKTextureLoaderOriginBottomLeft];
GLKTextureInfo *texture = [GLKTextureLoader textureWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"] options:options error:&error];
if (error) NSLog(@"Ripple FRONT TEXTURE ERROR: %@", error);
//bind the texture to texture unit 0
glActiveTexture(GL_TEXTURE0);
glBindTexture(texture.target, texture.name);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
Ahora ha perdido una configuración muy importante que se incluyó en setupAVCapture. Así que lo puso en después de que el código anterior en viewDidLoad:
if (_ripple == nil ||
texture.width != _textureWidth ||
texture.height != _textureHeight)
{
_textureWidth = texture.width;
_textureHeight = texture.height;
_ripple = [[RippleModel alloc] initWithScreenWidth:_screenWidth
screenHeight:_screenHeight
meshFactor:_meshFactor
touchRadius:5
textureWidth:_textureWidth
textureHeight:_textureHeight];
[self setupBuffers];
}
Y por último, usted tiene que cambiar el fragment shader un poco.
Abran Shader.fsh y cambiar la función principal para esto:
void main()
{
gl_FragColor = texture2D(SamplerY, texCoordVarying);
}
De todos modos, que debería hacerlo. Es muy divertido experimentar con el modelo RippleModel & para ver qué tipo de efectos extraños puedes hacer.
- 1. ¿Cómo utilizar una imagen SVG como fondo?
- 2. fondo de la imagen: cómo repetir la imagen como fondo en lugar de estirarla
- 3. Problema con la imagen de fondo de CSS (la imagen no se muestra)
- 4. aplicación libgdx y android. Imagen como fondo
- 5. Problema con la imagen de 9 parches como fondo
- 6. OpenCV cómo reescribir una imagen RGB
- 7. UIViewController con imagen de fondo
- 8. La imagen de fondo HTML y CSS no se muestra
- 9. ¿Cómo establecer la imagen como fondo de pantalla mediante programación?
- 10. WPF: imagen como fondo con máscara de opacidad
- 11. css con imagen de fondo sin repetir la imagen
- 12. JPanel con fondo de imagen
- 13. usando la imagen de fondo para li
- 14. imagen de fondo no se muestra en dompdf
- 15. ¿Cómo tener una imagen dinámica como fondo de CSS?
- 16. Cómo crear una imagen con fondo transparente
- 17. HTML5 Canvas como fondo de la imagen CSS?
- 18. ¿Cómo puedo detectar el fondo de una imagen mediante programación?
- 19. Cómo reescribir la URL sin actualizar, como GitHub.com
- 20. Cómo mantener el tamaño de la imagen de fondo cuando se muestra el teclado del software
- 21. ¿Cómo puedo hacer una imagen de fondo ruidosa usando PHP?
- 22. cómo atenuar la imagen de fondo
- 23. ¿Crear imagen con fondo transparente usando GDI +?
- 24. Forma de triángulo con imagen de fondo
- 25. ¿Cómo puedo establecer una imagen de fondo de botón en iPhone con Monotouch?
- 26. Precargar imagen de fondo
- 27. ¿Cómo puedo extender la clase de imagen?
- 28. Imagen de fondo al igual que con la ampliación
- 29. UITableViewController Imagen de fondo
- 30. Uso de una imagen XAML como fondo de ventana WPF
Gran respuesta jankins, esto funciona como un encanto! Esta respuesta debe marcarse como aceptada. –
Gracias jankins, esto debería marcarse como aceptado – Andrea
Respuesta muy incompleta – rraallvv