Tôi có nhiệm vụ triển khai trình hiển thị OpenGL ngoài màn hình cho cả Window và Linux trong C++. Tôi có phiên bản như vậy đã được viết bằng Java sử dụng LWJGL lib.There Tôi đã sử dụng đối tượng PBuffer, bên dưới mui xe tạo ra Pbuffers dựa trên hệ điều hành được sử dụng.Trước tiên tôi nghĩ để tái triển khai đầy đủ logic PBuffer tạo ra giống như nó tôi thực hiện trong nguồn gốc của LWJGL.Then tôi đọc this đăng trên StackOverflow.com nơi nó được đề xuất bằng cách sử dụng tạo bối cảnh chuẩn, giả sử sử dụng GLFW (đó là nền tảng chéo) nhưng không phải để tạo cửa sổ thực tế.Đó là đúng cách để đi? Ưu điểm và nhược điểm là gì khi sử dụng Pbuffer trong trường hợp này?Tạo bối cảnh tắt OpenGL nền tảng chéo
Cập nhật: Tôi chỉ muốn nhấn mạnh rằng tôi sử dụng FBOs để render các khung để vấn đề của tôi ở đây không phải là làm thế nào để render trong offscreen chế độ nhưng làm thế nào để tạo ra một bối cảnh không có cửa sổ ở cả Windows và Linux OS.
Điều đó đúng, tôi giả sử sử dụng FBO. Nhưng các FBO không tạo ra ngữ cảnh GL, đó là lý do tại sao tôi hỏi câu hỏi này. –
Nếu bạn muốn tăng tốc phần cứng, ít nhất là trên Windows, bạn không thể tạo ngữ cảnh OpenGL mà không tạo cửa sổ ẩn (ẩn) trước. Đó là vì [wglCreateContext] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd374379 (v = vs.85) .aspx) mong đợi một bối cảnh thiết bị (DC), và chỉ một DC của cửa sổ có thể có định dạng pixel tăng tốc phần cứng được chỉ định. Đặc biệt, bạn [không thể kết xuất với OpenGL tăng tốc phần cứng vào bộ nhớ DC] (http://www.opengl.org/discussion_boards/showthread.php/161374-Why-can-ti-write-to-a-memory-device -context? p = 1143832 & viewfull = 1 # post1143832). – sschuberth
Vì vậy, bạn có nghĩa là phiên bản Windows của PBuffer trong LWJGL tạo ra cửa sổ anyway và sau đó loại bỏ nó? –