2009-10-22 34 views
5

Xin chào, tôi đang lập trình trong OpenGLES cho iPhone nhưng hiện tại tôi đang mắc kẹt với một lỗi đối tượng framebuffer lạ.Lỗi đối tượng Framebuffer

Lúc đầu, tôi đang theo một vài hướng dẫn từ Simon Maurice: http://web.me.com/smaurice/AppleCoder/Welcome.html

Nhưng sau đó tôi chuyển sang làm một vài thí nghiệm của riêng tôi trước khi tiếp tục với hướng dẫn khác, tuy nhiên thử nghiệm của tôi đã đạt một vấn đề. Những gì tôi đã cố gắng để làm là làm cho EAGLView xem của một ViewController và điều này làm việc hoàn toàn tốt đẹp khi mã cơ bản ban đầu từ các hướng dẫn.

Vì EAGLView là phân lớp của UIView, không quá khó để thực hiện việc này, vì vậy tiếp tục thử nghiệm tôi muốn thực hiện với một phương tiện chặn sạch. Tôi đã tạo một dự án mới trong Xcode với dự án Ứng dụng dựa trên Windows và tạo ra một EAGLView mới và một ViewController để thực hiện nhiệm vụ tương tự như dự án trước đó.

Tuy nhiên sau khi biên dịch và chạy chế độ xem có màu trắng và giao diện điều khiển sẽ xuất ra lỗi "không thực hiện được đối tượng framebuffer đầy đủ% x" trong quá trình createFramebuffer. (Đầu ra bàn điều khiển lỗi: "GLController [2071: 207] không thể tạo đối tượng khung hình đầy đủ 0").

Lần đầu tiên tôi nghĩ đó là mã của tôi vì vậy tôi đã tách mã làm việc khỏi dự án trước đó thành dự án mới và vẫn nhận được các lỗi tương tự. Đồng thời tôi đã chuyển mã dự án mới vào dự án cũ và được biên dịch với đầu ra thành công.

Tôi nhầm lẫn với lý do tại sao cùng một mã sẽ không hoạt động chính xác trong dự án mới nhưng mã mới sẽ hoạt động chính xác trong dự án cũ. Nếu ai đó biết những gì tôi đang thiếu nó sẽ được đánh giá cao.

Cảm ơn.

(Ngoài ra thử nghiệm với một số EAGLViews từ mã mẫu Apple và các lỗi tương tự xảy ra trên dự án mới, nhưng không xảy ra trên các dự án cũ với một ViewController đính kèm.)

+0

Rất khó để chúng tôi trả lời câu hỏi này mà không cần thực hiện các bước tương tự như bạn đã làm. Bạn có thể muốn cho chúng tôi biết mã kết quả nào được trả về khi bạn gọi glCheckFramebufferStatusOES. – prideout

+0

Đầu ra của bảng điều khiển lỗi là 0. Các bước: 1. Tạo dự án mới từ Xcode (Trong trường hợp này là Ứng dụng dựa trên Windows). 2. Tạo UIViewController mới có liên kết với cửa sổ phụ. 3. Vì lợi ích của kiểm tra được kiểm soát, hãy lấy EAGLView từ một trong các hướng dẫn hoặc mã mẫu đơn giản. 4. Đặt chế độ xem UIViewController là EAGLView. 5. (Thêm khung cần thiết.) Xây dựng và tiếp tục. Vấn đề xảy ra mà không có UIViewController quá, nhưng các bước trên giải thích những gì tôi đang cố gắng để đạt được. Không chắc chắn lý do tại sao nó không thể được thực hiện với một dự án mới mặc dù đó là vấn đề chính tôi cần giúp đỡ. – Wesux

Trả lời

0

đã có một sự thay đổi trong OpenGLES mẫu chương trình từ SDK Iphone cuối cùng đến phiên bản hiện tại. Có mã hỗ trợ được viết để chọn giữa ES2.0 và ES1.1

xin lưu ý rằng.

+0

Tôi cũng nghĩ về điều đó, sử dụng mẫu OpenGLES mới cho thử nghiệm của tôi và nó cũng không hoạt động. Trừ khi sao chép tất cả các lớp EAGLView và các lớp liên quan như trình kết xuất ES1 và ES2 từ mẫu mẫu hoạt động hoàn toàn tốt trong dự án cũ. Nó dường như không muốn làm việc theo cách khác (Di chuyển các lớp ViewController vào mẫu SDK OpenGLES mới). – Wesux

4

Tôi đã gặp sự cố tương tự khi cố gắng đặt EAGLView làm chế độ xem của một viewController. Thay vào đó, hãy gắn thuộc tính viewView của viewController vào một UIView tiêu chuẩn. Sau đó, sau này, khi khung nhìn đã nạp thành công (có lẽ trong phương thức viewDidLoad của viewController), khởi tạo một EAGLView và thêm nó như là một khung nhìn con để viewController.view.

7

Chụp trong bóng tối ở đây, thiếu thông tin về những gì bạn đã làm, nhưng ... bạn có đang khởi tạo EAGLView của mình qua IB (và do đó thông qua -initWithCoder:) hoặc lập trình (-initWithFrame:)?

Nếu bạn nhìn vào EAGLView.m, bạn sẽ thấy chỉ -initWithCoder: thực hiện khởi tạo thực tế. Rất dễ dàng để di chuyển mã khởi tạo đó thành bộ khởi tạo được chia sẻ (hoặc -initWithFrame:).

+0

Cảm ơn bạn đã gặp sự cố này – blueberryfields

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