2011-02-01 119 views
21

Tôi dường như không thể tìm thấy câu trả lời cho câu hỏi này ở bất kỳ đâu. Tôi nhận ra rằng bạn phải sử dụng pyOpenGL hoặc một cái gì đó tương tự để làm công cụ openGL, nhưng tôi đã tự hỏi nếu nó có thể làm đồ họa 3d rất cơ bản mà không có bất kỳ phụ thuộc khác.PyGame có làm 3d không?

Trả lời

15

Không, Pygame là trình bao bọc cho SDL, là một api 2D. Pygame không cung cấp bất kỳ khả năng 3D nào và có lẽ sẽ không bao giờ xảy ra.

Thư viện 3D cho Python bao gồm Panda3DDirectPython, mặc dù chúng có thể khá phức tạp để sử dụng, đặc biệt là sau này.

+3

Điều gì sai về điều này? Pygame không làm 3d. PyOpenGL làm 3d. Đọc lại câu hỏi của anh ấy. – Kylotan

+2

Có, tôi hiện đang viết một trò chơi 3D. Và tôi thậm chí không sử dụng OpenGL. Tôi đang sử dụng một phương pháp giống như một Horst JENS được đăng. – Cnorwood7641

11

Vâng, nếu bạn có thể làm 2ngày bạn luôn có thể làm 3d. Tất cả 3d thực sự là nghiêng 2 chiều bề mặt cho ấn tượng bạn đang nhìn vào một cái gì đó với chiều sâu. Câu hỏi thực sự là nó có thể làm tốt, và thậm chí bạn có muốn. Sau khi duyệt tài liệu pyGame một lúc, có vẻ như nó chỉ là một trình bao bọc SDL. SDL không dành cho lập trình 3D, vì vậy câu trả lời cho câu hỏi thực sự là, Không, và tôi thậm chí sẽ không thử.

+3

Tôi đã thử. Trong thực tế, tôi đã viết một mô phỏng toàn bộ OpenGL trong C++ trước đây. Thật khó chịu và việc học một API 3D thực sự là một ý tưởng tốt hơn cho đến khi bạn biết mình đang làm gì với công nghệ 3D. – imallett

2

Python Đậu nành có thể hiển thị đồ họa 3D trên bề mặt pygame.

6

Bạn có thể làm trò chơi giả 3d (như "Doom") với chỉ pygame:

http://code.google.com/p/gh0stenstein/

và nếu bạn duyệt các trang web pygame.org bạn có thể tìm thêm "3d" trò chơi thực hiện với trăn và pygame.

Tuy nhiên, nếu bạn thực sự muốn tham gia lập trình 3D, bạn nên xem xét OpenGl, Máy xay sinh tố hoặc bất kỳ thư viện 3d thực khác nào.

0

Pygame không bao giờ được ban đầu có nghĩa để làm 3d, nhưng có một cách bạn có thể làm 3d với bất kỳ thư viện đồ họa 2d nào. Tất cả những gì bạn cần là chức năng sau, chuyển đổi điểm 3d thành 2d, cho phép bạn tạo ra bất kỳ hình dạng 3d nào bằng cách vẽ các đường thẳng trên màn hình.

def convert_to_2d(point=[0,0,0]): 
    return [point[0]*(point[2]*.3),point[1]*(point[2]*.3)] 

Điều này được gọi là giả 3d hoặc 2.5d. Điều này có thể được thực hiện, nhưng có thể chậm và cực kỳ khó làm, do đó bạn nên sử dụng thư viện dành cho 3d.

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