现代 OpenGL(4.6) - 将着色器编译到库中

Modern OpenGL(4.6) - Compiling shader into library

我想创建一个非常基本的 2D 游戏引擎来玩和学习。 为了实现这一点,我想出了用 C++ 编写引擎并将其与头文件一起编译到库中的想法,这样我就可以将它们包含到我的项目中,创建引擎实例 class 并从那里。基本上我不想直接在项目本身中使用 OpenGL 代码。

我将 GLAD 与 GLFW 一起使用,如果有任何相关性的话

为了将内容绘制到屏幕上,我想绘制一个全屏四边形并将我的像素作为纹理应用于它,但现在出现了问题:

在现代 OpenGL 中,您必须使用涉及着色器的可编程管道,我不确定如何将绘图添加到屏幕到我的库中,而不必将着色器本身添加到使用引擎的项目中。我想将包含等保持在最低限度。

基本上问题归结为:你能以某种方式将着色器编译到库中吗?

如果没有,或者如果有人对如何将此绘图编程到屏幕上有更好的建议。欢迎提示

不要求着色器必须是文件。您可以将着色器代码存储在一个变量中,从而将其编译到库中。你如何做到这一点取决于你,例如,你可以使用 constexpr const char*:

constexpr const char *DefaultVertexShader = 
"#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"  
"out vec4 vertexColor;\n"
"void main() {\n"
"gl_Position = vec4(aPos, 1.0);\n"
"vertexColor = vec4(0.5, 0.0, 0.0, 1.0);\n"
"}\n";