Tôi có giải pháp tùy chỉnh dựa trên http://blackpixel.com/blog/494/xcode-using-includes-in-opengl-shaders/ [404 ngay bây giờ]. Về cơ bản nó nói rằng bạn có thể sử dụng công cụ m4 để xử lý trước các tập tin.
Trong file nguồn GLSL chỉ bao gồm các mảnh mong muốn bạn muốn sử dụng lại:
include(Utils.glsl)
include(Colors.glsl)
...
void main (void) {
...
}
Trong Xcode, thêm tất cả glsl
file “Sao chép Bundle Tài”.
Thêm một “Run Script” giai đoạn với shell script này:
#!/bin/sh
cd ${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}
find . -name "*.fsh" | while read file; do
echo Preprocess $file
m4 "$file" > "$file.tmp"
mv "$file.tmp" "$file"
done
exit 0
Kịch bản giả định shaders bạn có .fsh
mở rộng. Việc chỉnh sửa nó để phù hợp với tiện ích của trình tạo bóng của bạn là tầm thường.
Được cảnh báo: các trình tạo bóng của bạn sẽ dễ dàng truy cập được đối với hầu hết mọi người. Bạn có thể sử dụng nó để phát triển và chuyển đổi chúng thành chuỗi trước khi phát hành chúng (không phải là sự bảo vệ thực sự trừ khi bạn mã hóa nó ...).
Ngoài ra, nếu không có nhiều chia sẻ giữa các trình đổ bóng, bạn sẽ kết thúc với nhiều mã không sử dụng. Tôi đoán trình biên dịch đổ bóng sẽ chăm sóc nó nhưng tôi không chắc chắn 100% nếu có một số hình phạt về hiệu suất.