Leggendo le specifiche OpenGL, ho notato che si può includere più shader dello stesso tipo in un singolo programma (cioè più di un GL_VERTEX_SHADER allegato con glAttachShader). Specificamente in OpenGL 4.2, §2.11.3, Oggetti programma: "Più oggetti shader dello stesso tipo possono essere collegati a un singolo oggetto programma ...".Collegamento di più shader dello stesso tipo in un singolo programma OpenGL?
Qui potrebbero essere applicati i programmi di pipeline OpenGL e le subroutine, ma questo è stato definito prima di quelli esistenti (infatti torna alle specifiche 2.1, §2.15.2) quindi sto cercando un esempio pre-GL4 di questa idea. Quando ho fatto alcuni test semplici, ho scoperto che incluso più di uno void main()
causato errori di collegamento. Qualcuno sa di un esempio didove viene utilizzato?
Non sono sicuro che funzioni, ma suppongo che tu possa avere degli shader con funzioni comuni (ma nessuna funzione principale) in modo da poterli collegare al porgram e accedere a queste funzioni dallo shader principale. In questo modo hai solo bisogno di compilare quelle funzioni una sola volta. –