2012-02-15 24 views
6

Khi tôi thiết lập GLKViewController/GLKView để vẽ với CoreImage, đôi khi tôi nhận được thông báo trong tiêu đề.CoreImage: EAGLContext framebuffer hoặc renderbuffer cấu hình không đúng

Các thiết lập như sau:

_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; 

self.view.context = _context; 
self.view.drawableDepthFormat = GLKViewDrawableDepthFormat24; 
self.view.backgroundColor = UIColor.blackColor; 
self.view.contentScaleFactor = UIScreen.mainScreen.scale; 

glGenRenderbuffers(1, &_render_buffer); 
glBindRenderbuffer(GL_RENDERBUFFER, _render_buffer); 
glClearColor(0.0, 0.0, 0.0, 0.0); 
glClear(GL_COLOR_BUFFER_BIT); 

_core_image_context = [CIContext contextWithEAGLContext: _context]; 

[EAGLContext setCurrentContext:_context]; 

Tôi có subviews UIKit trong GLKView và có vẻ như rằng khi tôi thêm/xóa chế độ xem nó bằng cách nào đó làm mất hiệu lực bối cảnh tạm thời. Điều này là (ngoại trừ trong một số trường hợp hiếm hoi tôi vẫn cần phải góc) cập nhật tiếp theo tôi có thể vẽ trong bối cảnh mà không gặp khó khăn.

Tôi được phép thử lại bản vẽ nếu không thành công nhưng làm cách nào để biết ngữ cảnh không hợp lệ? Làm thế nào tôi có thể phát hiện nó hoặc ngăn chặn nó bị vô hiệu?

Trả lời

1

A GLKView thiết lập và quản lý bộ đệm hiển thị. Bằng cách gọi một cách rõ ràng glGenRenderBuffers()glBindRenderbuffer() bạn đang nhầm lẫn với cấu hình của GLKView.

Các vấn đề liên quan