2012-05-12 30 views
5

Vì vậy, tôi muốn bắt đầu chơi với OpenGL nhằm thực hiện một số ý tưởng trò chơi mà tôi đã có trong một thời gian dài, nhưng tôi nhận thấy có một số phiên bản OpenGL.Phiên bản OpenGL

Tôi lý tưởng cũng muốn hỗ trợ các máy tính cũ hơn, vì vậy tôi đã tự hỏi liệu OpenGL 2.1 có phải là phiên bản tốt nhất để sử dụng hay không. OpenGL 4 thậm chí không hoạt động trên máy tính để bàn của tôi: O

Loại thông số tối thiểu cho trò chơi sẽ là thẻ đồ họa thời đại DX9, vì vậy hầu hết các máy tính hiện đại đều chạy nó (ngay cả đồ họa trên bo mạch thấp). Tôi sẽ xem xét JOGL để thực hiện như tôi biết Java là tốt nhất (đã làm Java3D trong quá khứ) và tôi muốn triển khai cho tất cả 3 hệ điều hành lớn.

Với ý nghĩ này, bạn sẽ đề xuất loại sách nào cho tôi? Nó sẽ là vô nghĩa khi nhận được một OpenGL 3 hoặc 4 cuốn sách như tôi đã đọc rằng có những thay đổi lớn? Tôi có nên giải quyết một cuốn sách cũ hơn thay vì 2.1 không?

Trả lời

2

OpenGL 2.1 có thể là tốt nhất. như một so sánh nó có tương đối tương tự như DirectX 9c, đó là Windows XP mới nhất có thể nhận được, và tôi biết có rất nhiều hộp XP ra khỏi đó. một số người bạn của tôi vẫn thích xp.

Thẻ đồ họa không hỗ trợ các API này tại thời điểm này có thể rất lạc hậu.

Nếu người dùng không thể chạy trò chơi của bạn bằng 2.1, bạn có thể phải đề nghị người dùng mua một máy tính mới hơn. thậm chí bạn có thể muốn sử dụng OpenGL 3.0, nếu bạn áp dụng suy nghĩ này.

Theo ý kiến ​​của tôi, tôi sẽ cố gắng tìm hiểu 2.1 trước tiên và thực hành một số, và sau đó, bắt đầu sử dụng 3.x và cuối cùng 4.x. Các công ty trò chơi lớn thường không quan tâm đến tính tương thích và có người dùng mua phần cứng mới.

+0

Cảm ơn câu trả lời của bạn. Tương thích với XP và DX9 là những gì tôi mong muốn vì nó không phải là COD kế tiếp;) Tôi thấy một cuốn sách được đề nghị gọi là "opengl superbible", nhưng phiên bản mới nhất dường như bao gồm OpenGL 3, tôi có nên tìm hiểu cho ấn bản thứ tư? – user859194

+1

Ấn bản thứ tư có vẻ tốt đẹp. nó bao gồm 2.1 và dường như có các ví dụ tuyệt vời và mã nguồn, và thậm chí bao gồm các tập tin cho linux –

+0

Vâng, tôi nghĩ rằng tôi sẽ kiểm tra xem nó ra :) – user859194

3

Chỉ vì tò mò, bạn có trên Linux không?

Linux thực sự là nút cổ chai chính ở đây, hay đúng hơn, hệ thống Linux chạy với trình điều khiển nguồn mở là cổ chai (hệ thống với trình điều khiển ATI hoặc NVIDIA không phải là vấn đề, chúng sẽ hỗ trợ mới nhất và lớn nhất). Mọi thứ đang hình thành trên mặt trận này mặc dù, với việc phát hành của Mesa 8 đầu năm nay, cuối cùng đã có một giải pháp OpenGL 3 mã nguồn mở.

Tôi chắc chắn đề nghị bạn không bỏ qua shaders, nếu tôi ở trong giày của bạn, vì bạn đang sử dụng JOGL, tôi sẽ xem xét triển khai nó bằng cách sử dụng hồ sơ OpenGL ES 2 (vì bạn đang sử dụng java anyways, điều này sẽ làm cho tất cả mọi thứ khá dễ dàng di động để android là tốt nếu bạn sẽ thấy phù hợp)

Ồ, và ngoài ra, vì bạn đang mua sách, tôi sẽ xem xét Đồ họa máy tính tương tác: Phương pháp tiếp cận từ trên xuống với Shader dựa trên OpenGL (thứ 6 phiên bản).

Tôi đã đi mặc dù một phiên bản trước đó của cuốn sách này nhiều mặt trăng trước đây cho một khóa học tại uni. Và gần đây đã mua ấn bản thứ 6 chỉ đơn giản là vì tôi yêu một ấn bản cũ rất nhiều và chất lượng của nó rất nhiều, và chất lượng của nó :)

+0

Tôi thực sự sử dụng tất cả 3 hệ điều hành trên cơ sở thường xuyên, nhưng nó chủ yếu là Windows và OSX. Tôi sẽ không xem xét một cổng Android, ý tưởng trò chơi tôi đã không hoạt động tốt trên thiết bị di động :) Tôi sẽ xem xét cuốn sách đó, cảm ơn câu trả lời – user859194

0

Hãy nhớ rằng OpenGL cũ vẫn được hỗ trợ. Bạn không cần phải sử dụng OpenGL hiện đại, bạn hoàn toàn có thể sử dụng đường ống chức năng cố định nếu bạn đang làm một cái gì đó tương đối không phức tạp hoặc không cụ thể. Nếu bạn muốn bắt đầu thực hiện ánh sáng nâng cao hoặc một cái gì đó như thế này, đó là nơi OpenGL hiện đại có ích.

Thành thật mà nói, tôi giống như OpenGL trường cũ, nó dễ dàng hơn nhiều và bạn có thể hiển thị mọi thứ trên màn hình nhanh hơn nhiều.OpenGL hiện đại thật đáng kinh ngạc, nhưng nó có chi phí phức tạp hơn nhiều, bạn cần quá nhiều mã và bạn phải biết rất nhiều trước khi bạn thậm chí bắt đầu sử dụng nó một cách hiệu quả.

Sự khác biệt chính kể từ khi bạn hỏi là khả năng tùy chỉnh cách hoạt động của trình tạo bóng. Trình đổ bóng là chương trình chạy trên GPU. Trước đây, các trình đổ bóng này đã được lập trình sẵn và do đó bạn có ít quyền kiểm soát cách bạn muốn chúng hoạt động và do đó bạn bị giới hạn với những gì bạn có thể làm trong OpenGL (nó đã hoàn thành công việc, nó chung chung hơn và ít hơn quyền lực). Vì vậy, với OpenGL hiện đại, bạn có thể tùy chỉnh theo cách bạn muốn trình đổ bóng hoạt động, ví dụ như có một trình đổ bóng đỉnh, là một trình đổ bóng xử lý các điểm được đẩy tới GPU và tìm ra vị trí của các điểm đó. Trong OpenGL hiện đại, bạn tùy chỉnh cách các trình đổ bóng hoạt động bằng cách sử dụng một cái gì đó gọi là GLSL

GLSL là ngôn ngữ bán lắp ráp kiểu C được đẩy vào GPU và đó là sự khác biệt chính giữa OpenGL cũ và hiện đại.

Theo như một cuốn sách để có được, bạn sẽ phải có được một cuốn sách 2.0 cho 2.x, nó thậm chí không ở trong cùng một ballpark như OpenGL mới. Có những khái niệm chung chuyển sang OpenGL hiện đại nhưng phần lớn nó hoàn toàn khác. Tôi đã ra lệnh cho lập trình game OpenGL của Andre Lamothe vì tôi nghĩ 5 đô la? Nó là một phần giới thiệu thực sự tốt cho 2.1 và mã được viết bằng Win32 và vì Windows API hầu như không thay đổi ở hầu hết tất cả các mã (nếu không phải tất cả) làm việc giống nhau mặc dù cuốn sách là khoảng 12 tuổi (đi đến cho thấy nó được viết tốt như thế nào) và nó thực sự có các dự án thực sự thú vị (robot hoạt hình, hình khối quay cho số đầu tiên). Dù sao, may mắn nhất cho bạn. Đó là một con đường khó khăn và dài, nhưng nó rất bổ ích.