Tại sao tôi không nên sử dụng glTools / glut khi phát triển các ứng dụng hoàn chỉnh?


7

Tôi đã bắt đầu học cách sử dụng OpenGL một thời gian trước, sử dụng OpenGL SuperBible, Phiên bản thứ năm và tôi đã có người tranh luận về việc cuốn sách không thực sự dạy cách sử dụng OpenGL mà thay vào đó, nó dạy cách sử dụng hai trong số các thư viện trình bao bọc liên quan đến nó, glut và glTools.

Tôi cũng đã được thông báo rằng glut không bao giờ nên được sử dụng cho các dự án toàn diện, nhưng không có lý do hợp lệ nào được cung cấp với đối số.

Câu hỏi của tôi là tại sao, và khi nào tôi không nên sử dụng các thư viện glTools / glut, và tôi nên sử dụng cái gì thay thế?

Câu trả lời:


8

GLTools và GLUT không giống nhau. GLUT chịu trách nhiệm xử lý những thứ bên ngoài OpenGL. GLUT tạo và quản lý một cửa sổ và bối cảnh OpenGL; những thứ thực sự diễn ra trong bối cảnh đó (hay còn gọi là OpenGL) không phải là trách nhiệm của GLUT.

Maik đã đề cập đến lý do tại sao bạn không thấy GLUT trong các ứng dụng nghiêm trọng. GLTools là một vấn đề khác.

GLTools chỉ là một khung, một trình bao bọc xung quanh công cụ OpenGL. Có nhiều lý do để không sử dụng nó trong công việc nghiêm túc:

  1. Nó không hiệu quả. Nếu hiệu suất quan trọng, bạn sẽ muốn vượt qua nó.
  2. Không được tốt lắm. Lấy GLShaderManager làm ví dụ. Nó tải các shader hoặc trả về 0. Nếu có lỗi trình biên dịch / liên kết, nó không cung cấp thông tin nào về điều này. Vâng, nó ghi nhật ký vào stderr, nhưng không phải ai cũng có stderr được dẫn đến một nơi nào đó có thể nhìn thấy. Ngoại lệ là khá khó để bỏ qua.

Tôi đã có người tranh luận về việc cuốn sách không thực sự dạy cách sử dụng OpenGL mà thay vào đó, nó dạy cách sử dụng hai trong số các thư viện trình bao bọc liên quan đến nó

Đây là một bên, nhưng nói chung vấn đề liên quan đến điều này là khá đơn giản. 5 dạy bạn sử dụng khung trước khi giải thích khung đó đang làm gì. Vì vậy, bạn tìm hiểu cách sử dụng tải lưới của nó, cách sử dụng mã tạo ma trận phối cảnh, các shader mặc định của nó, v.v., tất cả trước khi tìm hiểu shader là gì, thuộc tính đỉnh là gì, v.v.

Về cơ bản, đó là lập trình chức năng cố định cho phần đầu tiên của cuốn sách. Nó chỉ sử dụng mã chức năng cố định của riêng nó chứ không phải của OpenGL.

Không phải là nó sử dụng một khung làm việc. Vấn đề là nó sử dụng khung để ẩn các chi tiết chưa được giải thích, thay vì ẩn các chi tiết không quan trọng với bài học hiện tại. Sau khi bạn đã thấy mã tải shader một vài lần, bạn không cần phải xem lại mã, vì vậy nó có thể là một hàm thư viện.

Một cách tốt hơn để cấu trúc cuốn sách sẽ là sử dụng các phần của khung sau khi hiển thị các lệnh gọi OpenGL cơ bản mà khung đang thực hiện. Bộ shader tiêu chuẩn là tốt, nhưng nó chỉ nên sử dụng chúng sau khi người dùng thấy các shader hoạt động bằng tay. Điều tương tự cũng xảy ra đối với tải và xử lý lưới, kết cấu, v.v.


Cảm ơn bạn rất nhiều, câu trả lời rất thấu đáo và sâu sắc.
Gabriele Cirulli

Tôi có cùng cảm nhận về GLTools. Nó không giải thích những gì thư viện làm, khiến tôi bối rối ngay từ đầu. Tôi đã cố gắng để tìm ra cái "bóng đổ chứng khoán" là cái quái gì. Sau đó, tôi nhận ra rằng những người được tạo ra bởi các tác giả. Đột nhiên, lợi ích trong cuốn sách giảm đáng kể. Bạn đề nghị xây dựng lại cuốn sách là khá tốt.
Robert Wang

3

Lập luận chống lại glut trong các dự án lớn là bạn không có quyền truy cập vào vòng lặp ứng dụng, vì vậy bạn không thể thay đổi nó để phù hợp với nhu cầu của mình. Tất cả nó có một số cuộc gọi lại được kích hoạt từ glut, nhưng bạn không có nhiều quyền kiểm soát về nó.

Tuy nhiên, mục đích của glut là tạo các bản demo và kiểm tra các ứng dụng một cách dễ dàng và đa nền tảng, mà không cần phải xử lý mã OS xấu xí để tạo các cửa sổ, đây chỉ là một câu hỏi về một số dòng mã sử dụng glut.


Có thể sử dụng glut cũng có thể gây hại cho tính di động?
Jonathan Connell

1
@ 3nixios Glut tuyên bố nó "hoạt động trên tất cả các nền tảng hệ điều hành PC và máy trạm". Nếu đó là những nền tảng mục tiêu của bạn, bạn sẽ có khả năng di chuyển an toàn
Maik Semder

Tôi thực sự đã suy nghĩ về bất kỳ nền tảng nào không được GLUT hỗ trợ. Tôi đã tự hỏi loại tác động nào mà việc thay đổi mục tiêu vào cuối ngày có thể gây ra.
Jonathan Connell

1
@ 3nixios một sự thay đổi muộn từ PC / máy trạm sang điện thoại di động thực tế là không thể nếu không viết lại rất nhiều mã VÀ tài sản. GLUT sẽ là vấn đề nhỏ nhất của bạn, nếu bạn vẫn cố gắng :)
Maik Semder

Ôi đừng bận tâm ...
Jonathan Connell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.