Tôi đang cố viết lại mã mẫu Apple GLCameraRipple, với hình ảnh làm nền. Trên thực tế tôi đang cố gắng tạo hiệu ứng gợn sóng trên hình ảnh nước bằng cách sử dụng mã này, nhưng mã đang làm việc cho Camera, Thay vào đó tôi chỉ muốn sử dụng một hình ảnh nước đơn giản làm nền thay vì máy ảnh. Bất kỳ hướng nào hay bất kỳ mã mẫu nào cũng sẽ là một trợ giúp lớn. Cảm ơn trước.Làm thế nào tôi có thể viết lại mẫu GLCameraRipple bằng Hình ảnh làm nền?
Trả lời
Cách hiệu ứng gợn sóng của máy ảnh hoạt động là nó làm biến dạng tọa độ kết cấu trên lưới tam giác - vì vậy tin tốt là hiệu ứng bạn muốn hoàn toàn tách biệt với kết cấu video; kết cấu của họ chỉ xảy ra là video. Để thực hiện những gì bạn muốn, tất cả những gì bạn cần làm là xóa tất cả mã video của máy ảnh và gắn kết kết cấu của riêng bạn.
Vì vậy, trong viewDidLoad, bạn muốn nhận xét ra [self setupAVCapture]
, và đi trước và nhận xét ra cả đồng phục kết cấu trong SetupGL, vì bạn sẽ chỉ sử dụng một (hai dòng là glUniform1i(uniforms[UNIFORM_Y], 0);
, glUniform1i(uniforms[UNIFORM_UV], 1);
), và sau đó tạo & ràng buộc của bạn kết cấu riêng.
GLKit là cách nhanh nhất để hoàn thành công việc như thế này. GLKit ẩn rất nhiều cuộc gọi hàm OpenGL từ bạn, nhưng rất nhanh, hiệu quả là &.
//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);
Bây giờ bạn đã mất một số thiết lập rất quan trọng được bao gồm trong setupAVCapture. Vì vậy, hãy đặt nó vào sau mã trên trong 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];
}
Và cuối cùng, bạn sẽ phải thay đổi trình đổ bóng phân đoạn một chút.
Mở Shader.fsh và thay đổi chức năng chính như sau:
void main()
{
gl_FragColor = texture2D(SamplerY, texCoordVarying);
}
Dù sao, đó phải làm điều đó. Thật thú vị khi thử nghiệm với RippleModel & xem loại hiệu ứng nào bạn có thể thực hiện.
- 1. Tôi có thể có nhiều hình nền bằng CSS không?
- 2. Tôi có thể sử dụng hình ảnh làm hình chữ nhật nền cho d3 treemaps không?
- 3. Làm thế nào bạn có thể tạo ra một nền gradient mà không có hình ảnh?
- 4. Làm thế nào tôi có thể lặp lại/dev/tty?
- 5. CSS: Chỉ có thể lặp lại một phần của hình ảnh để sử dụng làm nền?
- 6. Làm thế nào tôi có thể thiết lập đúng Hình nền của một TableView được nhóm?
- 7. Làm thế nào để viết mẫu `is_complete`?
- 8. làm thế nào để làm cho hình ảnh của tôi có thể bấm
- 9. Làm thế nào tôi có thể thiết lập một hình thức để có một nền trong suốt
- 10. Làm thế nào tôi có thể nhận Khung hình đầu tiên làm Ảnh từ youtube?
- 11. Làm thế nào tôi có thể làm toàn màn hình bằng Java trên OSX
- 12. Tôi có thể viết GEOTIFF bằng Java như thế nào?
- 13. Làm cách nào để đặt hình nền của UIScrollView thành hình ảnh có thể kéo dài?
- 14. TCPDF: Làm thế nào tôi có thể đặt một hình ảnh vào một khối HTML?
- 15. Làm thế nào để lấy lại mẫu/làm lại phổ?
- 16. Làm cách nào để chèn hình ảnh dưới văn bản dưới dạng nền pdf bằng iText?
- 17. Làm thế nào để có một hình ảnh rộng hơn di chuyển trong nền
- 18. làm thế nào tôi có thể chuyển đổi một hình ảnh RGB sang CMYK và ngược lại trong Java?
- 19. làm thế nào để desaturate hình ảnh nền của một div bằng cách sử dụng css?
- 20. Android: Làm thế nào tôi có thể giải quyết cho những hình ảnh trong GridView?
- 21. Sizeof hoạt động như thế nào? Làm thế nào tôi có thể viết của riêng tôi?
- 22. Làm thế nào tôi có thể tìm thấy màu chủ đạo của một hình ảnh?
- 23. nền hình ảnh Android lặp lại
- 24. Làm thế nào tôi có thể nhận được chiều rộng của div, được viết bằng CSS
- 25. Sử dụng imagemagick làm thế nào tôi có thể cắt một hình ảnh thành một số hình ảnh riêng biệt?
- 26. Android hình ảnh lập trình lát nền làm hình nền
- 27. (làm cách nào) tôi có thể tải xuống hình ảnh bằng JSoup không?
- 28. Làm thế nào tôi có thể giảm thiểu biểu mẫu bằng mã trên .NET Compact Framework
- 29. Làm thế nào tôi có thể lặp lại mảng đa chiều với mẫu Ngọc lang
- 30. Làm thế nào tôi có thể viết một mẫu hàm có thể chấp nhận một chồng hoặc một hàng đợi?
Câu trả lời tuyệt vời jankins, hoạt động này giống như một sự quyến rũ! Câu trả lời này phải được đánh dấu là được chấp nhận. –
Cảm ơn jankin, điều này phải được đánh dấu là đã chấp nhận – Andrea
Câu trả lời rất không đầy đủ – rraallvv