Đầu tiên; OpenGL shaders được biên soạn như thế nào? Chúng được biên dịch trên CPU, hay GPU, hay nó khác nhau bằng cách thực hiện? Các nhà cung cấp khác nhau có đầu ra nhị phân khác nhau hay không; nếu vậy, có thể biên dịch chéo một nhị phân cho một loại GPU trên GPU khác không? Tôi đang phát triển một trò chơi mà tôi đang lên kế hoạch chạy trên chip Intel GFX, thẻ ATI và thẻ NVIDIA. Tôi chỉ muốn gửi các phần nhị phân của các trình đổ bóng, mà không phải biên dịch nguồn trên các máy khách. Điều này có thể không? Quá trình biên dịch đổ bóng hoạt động như thế nào?Trình tối ưu hóa OpenGL có được biên dịch trên GPU hay CPU không? Đầu ra nhị phân khác nhau tùy theo nhà sản xuất GPU như thế nào?
12
A
Trả lời
11
Quá trình biên dịch nói chung được thực hiện trên CPU. Tuy nhiên, đầu ra khác nhau không chỉ bởi nhà cung cấp, mà còn theo mô hình. Như vậy, các trình đổ bóng phải được biên dịch lại trên máy của người dùng để duy trì tương thích với bất kỳ kiểu GPU nào mà người dùng có thể đang sử dụng (bao gồm các mẫu GPU có thể không tồn tại khi bạn đang viết trò chơi của mình!)
làm thế nào hầu hết các trò chơi thương mại làm điều đó? – IDWMaster
Có. Bạn có thể cố gắng làm cho nó ít rõ ràng hơn bằng cách làm xáo trộn nội dung của trình đổ bóng của bạn (ví dụ, mã hóa nó để nó không hiển thị trong văn bản thô, xóa nhận xét và đổi tên người dân địa phương, v.v.) nhưng bạn phải có mã nguồn đó. – bdonlan