2012-06-19 31 views
5

Tôi đang tạo GUI trong OpenGL (cụ thể hơn là lwjgl). Tôi đã cố gắng hết sức để nghiên cứu những cách khác nhau để làm điều này nhưng tôi đang gặp khó khăn trong việc tìm kiếm chính xác những gì tôi muốn. Tôi không muốn sử dụng bất kỳ thư viện bên ngoài nào (chỉ những thư viện được xây dựng trong OpenGL, thậm chí cố gắng tránh xa việc sử dụng GLUT) và tôi muốn nó hoạt động trên bất cứ thứ gì hỗ trợ OpenGL (ví dụ: Frame Buffer Objects không hoạt động trên card đồ họa).OpenGL vẽ một phần đối tượng trong bảng điều khiển có thể cuộn

Tôi đang tạo GUI 3D với bảng điều khiển có thể cuộn dưới dạng thành phần. Vấn đề là tôi không biết làm thế nào để vẽ một thành phần GUI một phần mà không thực hiện nhiều phép tính để chỉ render một phần của nó. Tôi đang làm cho các thành phần ra khỏi nguyên thủy OpenGL, không phải kết cấu. Tôi đã hy vọng có một cách dễ dàng để làm điều này như sử dụng nhiều viewports. Tôi thậm chí không thực sự hiểu được những gì là viewports.

Tóm lại: Tôi cần phải có một bảng điều khiển cuộn như một thành phần chồng chéo các thành phần GUI khác (vì nó sẽ là một trình đơn thả xuống) và không để bất kỳ thành phần nào trong bảng vẽ của tôi nằm ngoài bảng điều khiển của tôi.

Trả lời

6

Nếu bạn chỉ muốn ngăn các điểm ảnh nằm ngoài vùng chữ nhật (và tôi nghĩ đó là những gì bạn đang hỏi), hơn glScissor chính xác là những gì bạn đang tìm kiếm.

Trong lwjgl, bạn có thể tìm thấy hàm trong org.lwjgl.opengl.GL11.

+1

Bạn cũng có thể tận dụng GL_GLIP_PLANE, chúng sẽ cho phép bạn quay trong không gian mô hình (trong trường hợp tọa độ GUI của bạn không khớp với pixel khung nhìn). – Kromster

+0

Cảm ơn, đó là chính xác những gì tôi đang tìm kiếm – axelrod360

1

Nếu bạn muốn cuộn cảnh lớn hơn trong vùng cố định trên màn hình, cách đơn giản nhất để thực hiện là chỉ sửa đổi ma trận chiếu của bạn cho vị trí cuộn và vẽ lại cảnh. Nếu bạn đang sử dụng gluPerspective để thiết lập ma trận chiếu của bạn, bạn sẽ phải chuyển đổi nó thành một cuộc gọi trực tiếp tới glFrustum; nếu bạn đang sử dụng glOrtho thì đơn giản hơn nhiều. Hãy nhớ rằng "di chuyển" một khung nhìn phối cảnh không có cách nào đúng để làm việc - nó phụ thuộc vào loại hiệu ứng bạn muốn đạt được, và loại biến dạng cụ thể bạn muốn gần các cạnh của khung nhìn tổng thể .

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