Tôi muốn có cùng một nguồn đổ bóng cho OpenGL ES và OpenGL (Windows). Để thực hiện điều này, tôi muốn xác định các kiểu dữ liệu tùy chỉnh và chỉ sử dụng các hàm OpenGL ES.OpenGL ES và OpenGL shaders tương thích
Một cách tiếp cận là để xác định:
#define highp
#define mediump
#define lowp
cho Windows shader và viết shader như nó là dành cho OpenGL ES.
cách tiếp cận khác là xác định kiểu dữ liệu tùy chỉnh như thế này cho OpenGL ES:
#define hvec2 highp vec2
và như thế này dành cho Windows
#define hvec2 vec2
Bạn nghĩ gì là tốt hơn? Bạn có các giải pháp khác cho vấn đề này không?
Có ai biết cách này hoạt động không? Tôi đã lướt qua spec nhưng không thể tìm thấy bất cứ điều gì liên quan đến cách một GLSL ES (phiên bản 100) và GLSL (phiên bản 150) sẽ tương thích ở tất cả. –
Để tham khảo trong tương lai, tôi phát hiện ra rằng dưới ES2_compatibility một OpenGL 3.2> context có thể tải các shaders ES 2.0 với #version 100 ở trên cùng. –