Tôi đã thấy rất nhiều câu hỏi xung quanh khu vực này nhưng không phải câu hỏi chính xác này nên xin lỗi nếu đây là một bản sao.
Tôi đang làm một trò chơi 3d nhỏ. Thành thật mà nói, đó chỉ là một dự án sở thích nhỏ và có khả năng sẽ không trở thành một trò chơi thực tế, tôi sẽ rất vui khi tạo một bản demo đồ họa đẹp và tìm hiểu về kết xuất 3d và thiết kế c ++.
Mục đích của tôi là sử dụng direct3d9 để kết xuất vì tôi có một chút kinh nghiệm về nó và dường như nó đáp ứng yêu cầu của tôi. Tuy nhiên nếu tôi đã học được một điều với tư cách là một lập trình viên thì hãy hỏi " có lý do nào có thể hiểu được rằng thành phần này có thể được thay thế bằng một hàm ý khác " và nếu câu trả lời là có thì tôi cần thiết kế một sự trừu tượng và giao diện phù hợp với thành phần đó . Vì vậy, mặc dù tôi có ý định thực hiện d3d9, tôi cần thiết kế giao diện 3d có thể được triển khai cho d3d11, opengl ...
Câu hỏi của tôi là mức độ nào là tốt nhất để làm điều này? Tôi nghĩ rằng một giao diện có khả năng tạo và vẽ sau này
- Bộ đệm Vertex và bộ đệm chỉ mục
- Hoạ tiết
- "Shader" của Vertex và Pixel
- Một số đại diện của trạng thái vẽ (chế độ hòa trộn, v.v ...)
Nói cách khác, một giao diện cấp độ khá thấp, nơi mã của tôi để vẽ, ví dụ như một mô hình hoạt hình sẽ sử dụng giao diện để có được bộ đệm đỉnh trừu tượng, v.v. Tôi lo lắng mặc dù nó quá thấp để trừu tượng hóa tất cả các chức năng tôi cần một cách hiệu quả.
Cách khác là làm điều này ở mức cao hơn, nơi giao diện có thể vẽ các đối tượng, hình động, cảnh quan, v.v. và thực hiện chúng cho từng hệ thống. Điều này có vẻ như nhiều công việc hơn, nhưng tôi đoán linh hoạt hơn.
Vì vậy, đó thực sự là câu hỏi của tôi, khi trừu tượng hóa hệ thống vẽ, mức độ giao diện nào hoạt động tốt nhất?