Tôi đồng ý về những cuốn sách trên với một vài lưu ý:
Hướng dẫn thứ 8 về lập trình OpenGL hiện đã được phát hành và đã được làm lại cho OpenGL 4.3 hiện đại.
Phiên bản SuperBible 5, sẽ cung cấp cho bạn một thư viện nạng để bắt đầu nhưng khi bạn đọc cuốn sách, bạn sẽ thực hiện lại chức năng của thư viện đó, vì vậy đến cuối của nó, bạn nên hoàn toàn thành thạo. Tôi cũng khuyên bạn nên gói nội dung OpenGL vào thứ gì đó nếu bạn sử dụng ngôn ngữ hướng đối tượng. Tôi đang làm việc trên thư viện của riêng mình để giải trí, dường như là hướng đi, tự mình thực hiện nó Tôi hiểu tất cả mọi thứ trong và ngoài tôi chỉ cần đưa vào các bit tôi thực sự sử dụng. Ngoài ra, bạn có thể trừu tượng hóa một số thứ như gửi dữ liệu tới các shader (không phải là ShinyM vật liệu.setColor (Đỏ) đẹp hơn nhiều), điều này cũng có thể cho phép bạn nhập một số nội dung bằng cách cung cấp các lựa chọn thay thế. Ngoài ra còn có oglplus .
Vấn đề chính với việc học OpenGL 'cốt lõi' hiện đại là để có được một đường ống cơ bản và chạy ngay cả khi chỉ để vẽ một khối lập phương, bạn cần hiểu những điều sau:
- Các hoạt động ma trận (sử dụng GLM nếu bạn sử dụng C ++, bạn cũng sẽ cần một phiên bản SDK không chính thức của MatrixStack OpenGL tại đây hoặc đơn giản của tôi ở đây .)
- Lập trình shader GLSL.
- liên kết dữ liệu với shader và Vertex Buffer Object. Nếu bạn muốn học chỉ là hồ sơ cốt lõi thực sự, tất cả chúng sẽ cần phải được thực hiện đồng thời và nếu bất cứ điều gì bị hỏng, bạn sẽ không nhìn thấy bất cứ điều gì và gần như không có manh mối nào. Điều đó cũng không bao gồm những thứ như ánh sáng cơ bản (nơi bạn cần học các thuật toán tạo bóng ngoài ngôn ngữ lập trình).
Nhưng bạn không cần phải bắt đầu trong phần sâu hơn với hồ sơ cốt lõi. Sử dụng một số chức năng không dùng nữa lúc đầu, mọi thứ vẫn sẽ hỗ trợ, sau đó hiện đại hóa nó.
Một vấn đề khác là OpenGL 'hiện đại' thực sự có thể đề cập đến 3 điều:
Đầu tiên là đường ống đổ bóng lập trình trái ngược với đường ống chức năng cố định. Các kỹ thuật 'hiện đại' cốt lõi đã có thể kể từ khi OpenGL 2.0 được phát hành năm 2004 khi các shader được giới thiệu (các hướng dẫn không được cập nhật) cũng có 1.5 đối tượng đệm của Vertex, một nền tảng khác của OpenGL hiện đại. Một vấn đề là ngay cả ngày nay các nhà phát triển OpenGL thậm chí có thể không tận dụng được tất cả những thứ đó, có rất nhiều netbook tồi tệ với những chipset Intel chỉ hỗ trợ OpenGL 1.5 và các điện thoại như iPhone / Android cũ chỉ hỗ trợ OpenGL ES 1.1. Sự khác biệt thực sự duy nhất giữa công cụ này trong OpenGL 2.0 và OpenGL 3.x / 4.x là bắt buộc đối với cấu hình cốt lõi.
OpenGL hiện đại cũng có thể đề cập đến những thứ mới trong 3.x, 4.x. Những điều như Vertex mảng đối tượng , bộ đệm khung Objects , Uniform Buffer Objects / std140 , vòng loại bố trí , thủ tục con GLSLvân vân Nhiều người trong số tôi đã tìm thấy có thể làm cho mọi thứ tốt hơn nhiều để lập trình với. Họ cũng có thể tinh tế thay đổi đường ống động cơ tổng thể của bạn. Chúng cũng là những thứ mà với một chút nỗ lực, bạn có thể sao lưu bằng cách tạo các hàm trợ giúp, v.v. (Ví dụ viết một đối tượng trình quản lý đổ bóng chung mà bạn có thể sử dụng để đặt đồng phục, nếu UBO được hỗ trợ, hãy sử dụng cách khác để quản lý tải lên các giá trị cho trình đổ bóng theo cách thủ công , có thể đặt một công cụ viết lại shader nhỏ vào đó để tự động hóa nó). Công cụ này chỉ chạy trên thẻ video mới, bạn sẽ không thấy bất kỳ netbook nào hỗ trợ nó hoặc bất kỳ máy chơi trò chơi video thế hệ hiện tại nào (chúng sử dụng tập hợp con OpenGL của riêng chúng tương tự như OpenGL ES). OSX mới nhất chỉ có 3.
OpenGL thế hệ tiếp theo cực kỳ hiện đại. OpenGL 4.3 vừa được phát hành. Nó đi kèm với các shader tính toán, bộ đệm lưu trữ shMultiDrawElementsInirect và shader. Điều này cho phép một đường ống cơ bản khác nhau, nơi bạn tải tất cả dữ liệu đỉnh lên GPU và sau đó sử dụng các trình đổ bóng tính toán để tính toán những gì sẽ được rút ra thay vì thực hiện trong chương trình của bạn. Thật không may, điều này là rất mới vì vậy tôi không biết bất kỳ hướng dẫn phong nha nào về nó. Hãy xem bài đánh giá OpenGL 4.3 đưa ra phác thảo về cách thức hoạt động của nó (tác giả cũng nói rằng có một bài viết GPU Pro sẽ được phát hành giải thích về nó). Là thương hiệu mới, nó sẽ không được hỗ trợ ở bất cứ đâu trong giai đoạn này (trừ khi bạn sử dụng thẻ nvidia mới hơn với trình điều khiển beta). Mặc dù bạn có thể sử dụng OpenCL / CUDA để triển khai một số phần mềm.
Tôi sẽ bỏ qua glBegin, glEnd, glVertex *, glN normal *, glTextCoord *, glTranslate *, glRotate *, glLoadIdenity, glModelViewMatrix, v.v. Thay vào đó, hãy bắt đầu với việc học Đối tượng đệm của Vertex mà không cần đổ bóng, đừng thử 3D tại thời điểm này chỉ là một hình tam giác trắng phẳng để bạn không phải làm việc với các thao tác 3d bằng ma trận (vì bạn sẽ cần phải học cách liên kết chúng với trình tạo bóng sớm không có ý nghĩa trong việc học theo cách cũ). Tiếp theo thêm vào trong các shader, bạn sẽ cần thay đổi cách các đối tượng bộ đệm đỉnh của bạn bị ràng buộc vì bây giờ bạn sẽ muốn sử dụng các thuộc tính đỉnh. Tìm hiểu làm thế nào để giao tiếp tài sản với họ thông qua đồng phục. Sau đó tìm hiểu các hoạt động ma trận với GLM, liên kết các ma trận với các shader và thực hiện 3D. Một khi bạn đã hoàn thành thì về cơ bản, đó chỉ là học những thứ nâng cao hơn như kết cấu,
Một số hướng dẫn OpenGL hiện đại trực tuyến nói chung, bao gồm các đường dẫn lập trình shader mà hầu hết chúng hoạt động với OpenGL 2.0+:
Đối với các tài nguyên học tập chung khác. OpenGL ES có thể là một điểm khởi đầu tốt. OpenGL ES đã loại bỏ tất cả những thứ không dùng nữa. OpenGL 4.1 có khả năng tương thích hoàn toàn với OpenGL ES, do đó, có thể lấy một chương trình OpenGL ES và chạy nó trong OpenGL 4.1. Và các nguyên tắc cơ bản là giống nhau cho cả hai.
Một số điều cần lưu ý là OpenGL ES 3.0 vừa được phát hành nhưng vì nó mới, nó sẽ không có bất kỳ hướng dẫn hoặc hỗ trợ phần cứng nào. Nó dường như không có bất kỳ thay đổi cơ bản chính nào (như sự khác biệt giữa mô hình đường ống cố định và mô hình đổ bóng mà chúng ta đã thấy với OpenGL ES 1.0-> 2.0). Vì vậy, bạn có thể sẽ không học được bất kỳ thứ lỗi thời.
Ngoài ra, OpenGL ES thường sẽ sử dụng EGL, do đó bạn sẽ cần học một cách khác để mở Cửa sổ nhưng điều đó không quá khó. Mặt khác, có một vài trình bao bọc / trình giả lập OpenGL ES xung quanh hoặc bạn có thể tìm hiểu trên Android / iPhone nếu bạn có (hoặc xem xét bằng cách sử dụng trình giả lập của chúng).
Có Hướng dẫn lập trình Addison Wesley OpenGL ES 2.0 tương đương với sách đỏ.
Bạn cũng có thể xem các công cụ tập trung vào trình tạo bóng GLSL vì đó là nơi phần lớn cuộc sống OpenGL hiện đại. Bạn chỉ cần đảm bảo những gì bạn học được bao gồm các mặt 'keo' ràng buộc OpenGL.
Kiểm tra phiên bản OpenGL Shading Language 2nd (Orange Book).
Sách dạy nấu ăn ngôn ngữ OpenGL 4.0 bao gồm một số nội dung OpenGL hay nhưng không phải là một hướng dẫn toàn diện. Nó chắc chắn đáng xem để có được một số hiểu biết trong các thực tiễn OpenGL thế giới thực mới nhất như các đối tượng bộ đệm thống nhất và các chương trình con GLSL.
Cuối cùng, bạn có thể có một cái nhìn về WebGL, mặc dù trong JavaScript sẽ có một chút khác biệt và khó gỡ lỗi hơn nhiều.