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:
- Nó không hiệu quả. Nếu hiệu suất quan trọng, bạn sẽ muốn vượt qua nó.
- 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.