Có bất kỳ lợi thế nào khi sử dụng DX10 / 11 cho trò chơi 2D không?


10

Tôi không hoàn toàn quen thuộc với bộ tính năng được giới thiệu bởi phần cứng lớp DX10 / 11. Tôi mơ hồ quen thuộc với các giai đoạn mới được thêm vào đường ống đồ họa có thể lập trình, chẳng hạn như trình tạo bóng hình học, trình tạo bóng tính toán và các giai đoạn sắp xếp mới. Tôi không thấy bất kỳ điều nào trong số này tạo ra nhiều sự khác biệt cho một trò chơi 2D.

Có lý do thuyết phục nào để chuyển sang DX10 / 11 (hoặc tương đương OpenGL) cho trò chơi 2D không, hoặc sẽ khôn ngoan hơn khi gắn bó với DX9 khi xem xét rằng một thị phần đáng kể của thị trường vẫn chạy trên các công nghệ cũ hơn (ví dụ: Tháng 2 năm 2012 khảo sát Steam liệt kê khoảng 17% người dùng vẫn đang sử dụng Windows XP)?

Câu trả lời:


5

Nó phụ thuộc vào những gì bạn đang làm. Nếu bạn đang sử dụng Direct3D, lý do duy nhất để chuyển đổi là để có quyền truy cập vào các tính năng phần cứng mà bạn không thể có được bằng cách khác.

Đối với trò chơi 2D, về mặt lý thuyết có thể các tính năng nhất định có thể khiến bạn quan tâm. Ví dụ: OpenCL hoặc DirectCompute. Civilization V được sử dụng DirectCompute để giải nén kết cấu. Điều này làm giảm đáng kể thời gian tải, vì nó chỉ phải tải dữ liệu nén. Và game 2D thường có rất nhiều hình ảnh. Nếu thời gian tải là một vấn đề, điều này có thể giúp đỡ.

OpneCL phải có sẵn trên tất cả phần cứng GeForce 8xxx trở lên. Trên ATI, nó có sẵn trên HD 4xxx và phần cứng tốt hơn.

Tôi muốn nói rằng tính năng lớn nhất bạn có thể sử dụng trong DX11 là khả năng đọc và ghi hình ảnh tùy ý hơn trong các shader. Điều đó có thể hữu ích cho các hiệu ứng chuyên ngành nhất định. Tôi không thể nghĩ ra bất cứ điều gì ngay bây giờ ... điều này sẽ cho bạn biết khả năng này quan trọng như thế nào.

Nói chung, tôi sẽ nói rằng nếu bạn đang sử dụng D3D, có lẽ bạn sẽ không thu được nhiều tiền. Và nếu bạn chưa hiểu các tính năng mới là gì và muốn sử dụng chúng trong trò chơi của mình, bạn gần như chắc chắn sẽ không thu được nhiều. Hầu hết trong số họ sẽ phức tạp hơn.

OpenGL là khác nhau vì một lý do chính. OpenGL 2.1 (các hơn hoặc ít tương đương với D3D9) hút như một API. OpenGL 3.3 (cộng với một số tiện ích mở rộng gần đây chạy trên phần cứng 3.3) cải thiện API rất nhiều. Vị trí thuộc tính rõ ràng, tách các chương trình đổ bóng, mọi thứ trong gói ngôn ngữ tô bóng 420 , v.v.

Một số trong số này hoạt động đủ tốt ở dạng mở rộng so với 2.1. Một số trong số họ ... không. Tôi vẫn không chắc chắn liệu có ổn không khi sử dụng các vị trí thuộc tính rõ ràng với attributekhai báo (trước incú pháp hiện tại ). Gói ngôn ngữ Shading 420 đặc biệt nói rằng nó không hoạt động với các phiên bản GLSL trước 1.30 (còn gọi là: OpenGL 3.0).

Điều đó không có nghĩa là GL 2.1 không sử dụng được. Đó chắc chắn là chức năng và dịch vụ, chỉ là không thú vị. Mặc dù một số trình điều khiển mà bạn sẽ thấy việc triển khai nó không có khả năng phục vụ. Phần cứng DX9 của ATI không còn được hỗ trợ, vì vậy những trình điều khiển đó thực sự có lỗi. Và Intel không bao giờ quan tâm đến OpenGL, vì vậy sử dụng các shader trên phần cứng của họ là điều may mắn.

Nhưng cá nhân, nếu cơ sở người dùng dự định của bạn cho phép, tôi sẽ chuyển sang GL 3.3 nếu bạn đang sử dụng OpenGL. Nếu không, bạn sẽ chỉ phải giải quyết các vấn đề 2.1.


5

Có một vài điều tôi nghĩ bạn nên xem xét:

  • Nếu bạn có một công cụ D3D9 được thử nghiệm tốt, có lẽ không đáng để chuyển sang D3D11, nếu bạn không sử dụng các tính năng mới. Khi bắt đầu từ đầu D3D11 hấp dẫn hơn nhiều.

  • Sẽ sớm có ngày phát hành trò chơi của bạn? XP sẽ hết hỗ trợ chỉ sau hơn hai năm và nếu bạn nhìn vào dữ liệu lịch sử mà cơ sở cài đặt XP đang giảm khá nhanh (~ 1% / tháng trên Steam).

  • Xem xét tỷ lệ 17% người dùng XP sẽ có PC đáp ứng thông số tối thiểu cho trò chơi của bạn trong D3D9. Càng cao thì càng đáng để hỗ trợ họ.

  • DX10 chủ yếu là vô nghĩa để sử dụng cho sự phát triển mới. DX11 chạy trên cùng hệ điều hành và phần cứng (thông qua các cấp tính năng).

  • DX11 hỗ trợ trình kết xuất phần mềm (WARP) dưới dạng thiết bị dự phòng, có thể đủ nhanh để chạy trò chơi với yêu cầu GPU thấp.

  • DX9 bản địa hỗ trợ nhiều tính năng hơn D3D11 khi sử dụng bất kỳ cấp độ tính năng D3D9 nào. Rất may phần cứng DX9 trong PC có khả năng DX10 là rất hiếm.

  • Phần cứng DX10 / 11 có khả năng ít thay đổi hơn nhiều, vì vậy, nếu bạn làm cho phần cứng DX9 sử dụng WARP, bạn không cần phải lo lắng về những hạn chế khó xử với những thứ như kết cấu không có hai nguồn hoặc ánh xạ pixel texel lúng túng .

  • Nếu trò chơi của bạn sắp hết phần cứng, DX11 sẽ có thêm một số thủ thuật để tăng hiệu suất. Ví dụ đa luồng mã vẽ.


Tôi hơi bối rối về các cấp độ tính năng. Nếu tôi phát triển bằng DX11 nhưng nhắm mục tiêu mức tính năng DX9, tôi hiểu rằng nó sẽ chạy trên phần cứng DX9. Nhưng nó vẫn sẽ yêu cầu thời gian chạy DX11 tức là nó sẽ chạy trên Windows XP chứ?
David Gouveia

DX11 hoàn toàn không hoạt động trên XP. Các cấp độ tính năng làm là cho phép bạn sử dụng API DX11 với phần cứng cũ hơn. Kiểm tra msdn.microsoft.com/en-us/l Library / ff476876% 28v = vs85% 29.aspx để biết chi tiết về từng cấp độ tính năng cho phép bạn làm gì.
Adam

1

Các shader hình học một mình là một lý do để sử dụng D3D10 / 11, nếu bạn dự định có một số lượng lớn các hạt hoặc sprite.

DirectCompute cũng có thể được sử dụng cho một số lợi ích tốc độ tốt.

Cá nhân, chỉ cần có API D3D10 / 11 sạch hơn và đẹp hơn là đủ lý do để không bao giờ chạm vào D3D9 hoặc OpenGL cho bất kỳ dự án nào chỉ dành cho Windows hiện đại. Tuy nhiên, trên thực tế, nhu cầu nhắm mục tiêu các thiết bị di động với GL | ES và đám đông WinXP vẫn khá lớn cần phải tránh D3D10 / 11 và bám vào D3D9 hoặc OpenGL.

Lưu ý rằng việc đi theo lộ trình OpenGL cho phép bạn nhận được các trình tạo bóng hình học, OpenCL và các tính năng phần cứng mới hơn khác ngay cả trên WinXP.

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.