Khi đọc thông số kỹ thuật OpenGL, tôi đã nhận thấy rằng nó có thể bao gồm nhiều trình tạo bóng cùng loại trong một chương trình (nghĩa là nhiều hơn một GL_VERTEX_SHADER đính kèm với glAttachShader). Cụ thể trong OpenGL 4.2, §2.11.3, Program Objects: "Nhiều đối tượng shader cùng loại có thể được gắn vào một đối tượng chương trình duy nhất ...".Đính kèm nhiều trình tạo bóng cùng loại trong một chương trình OpenGL duy nhất?
Chương trình đường ống OpenGL và chương trình con có thể áp dụng ở đây, nhưng điều này đã được xác định trước khi những tồn tại (trên thực tế nó quay trở lại 2.1 spec, §2.15.2) vì vậy tôi đang tìm một ví dụ trước GL4 của ý tưởng này. Khi tôi thực hiện một số thử nghiệm đơn giản, tôi thấy rằng bao gồm nhiều hơn một void main()
gây ra lỗi liên kết. Có ai biết về một ví dụ thực tế là thực tế trong trường hợp này được sử dụng không?
Tôi không chắc chắn nếu nó hoạt động, nhưng tôi đoán bạn có thể có các shader với các chức năng chung (nhưng không có chức năng chính) để bạn có thể đính kèm chúng vào porgram và có thể truy cập các chức năng này từ trình đổ bóng chính. Bằng cách này, bạn chỉ cần biên dịch các chức năng đó một lần. –