2011-01-24 24 views
6

Tôi đang cân nhắc tái cấu trúc một phần lớn mã hiển thị của mình và một câu hỏi xuất hiện trong đầu: Có thể hiển thị cả màn hình và kết cấu bằng nhiều tệp đính kèm màu trong đối tượng Bộ đệm khung không? Tôi không thể tìm thấy bất kỳ thông tin nào nếu điều này có thể xảy ra hay không mặc dù nó có nhiều ứng dụng hữu ích. Tôi đoán nó sẽ là đủ để ràng buộc kết cấu của tôi như màu đính kèm0 và renderbuffer 0 để attachment1?Có thể đính kèm trình kết xuất mặc định vào FBO không?

Ví dụ: tôi muốn tạo một ứng dụng tương tác, nơi bạn có thể "vẽ" trên mô hình 3D. Tôi giải quyết nơi người dùng vẽ bằng cách hiển thị tọa độ UV đến kết cấu để tôi có thể tra cứu tọa độ chuột để sửa đổi kết cấu. Trong trường hợp của tôi nó sẽ là nhanh nhất để có một shader mà cả hai rút ra của tia cực tím để kết cấu và kết cấu thực tế để màn hình trong một vượt qua.

Có cách nào tốt hơn để làm điều này hay tôi đi đúng hướng?

Trả lời

6

Không có thứ như "trình kết xuất mặc định" trong OpenGL. Có hệ thống cửa sổ được cung cấp mặc định bộ đệm khung với tên không đặt trước, nhưng về cơ bản có nghĩa là "không kích hoạt FBO". Vì vậy, không có, không may OpenGL bình thường không cung cấp phương pháp nào đó bằng cách nào đó sử dụng bộ đệm màu của nó như một tập tin đính kèm màu cho bất kỳ FBO nào khác. Tôi không biết bất kỳ tiện ích nào có thể cung cấp tính năng này.

Với bộ đệm hiển thị, cũng có tên không được đặt trước, nhưng nó chỉ là biến "không" đặc biệt và cho phép bộ đệm hiển thị không được kết xuất.

+3

thực sự. phần 4.4 của glspec đọc: "Ban đầu, GL sử dụng bộ đệm khung mặc định. Bộ nhớ, kích thước, phân bổ và định dạng của hình ảnh được đính kèm với bộ đệm khung này được quản lý hoàn toàn bởi hệ thống cửa sổ. Do đó, trạng thái của bộ đệm khung mặc định, bao gồm cả hình ảnh của nó, không thể thay đổi bởi GL, cũng như không thể xóa bộ đệm khung mặc định bằng GL. " –

+0

vì vậy điều đó có nghĩa là bạn thậm chí không thể thêm renderbuffer của riêng bạn vào bộ đệm khung mặc định. để giải quyết vấn đề của bạn, tùy thuộc vào trường hợp sử dụng, bạn có thể thử tra cứu "gluUnProject", chuyển đổi tọa độ cửa sổ thành tọa độ đối tượng –

+0

Cảm ơn câu trả lời. Tôi đoán tôi đã nhầm lẫn về framebuffer mặc định và "renderbuffer mặc định" không tồn tại. – Andos

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