C++ ge可执行文件,如果代码段只有几kiB,它将像一个微小的可执行文件一样快速加载。@KeithBecker:任何不是代码段一部分的东西实际上在启动时都不会加载到RAM中。操作系统创建一个页面映射,当(如果)您最终访问它时,这些部分将被拉入内存。然而,这涉及的

C++ ge可执行文件,如果代码段只有几kiB,它将像一个微小的可执行文件一样快速加载。@KeithBecker:任何不是代码段一部分的东西实际上在启动时都不会加载到RAM中。操作系统创建一个页面映射,当(如果)您最终访问它时,这些部分将被拉入内存。然而,这涉及的,c++,performance,opengl,glsl,shader,C++,Performance,Opengl,Glsl,Shader,ge可执行文件,如果代码段只有几kiB,它将像一个微小的可执行文件一样快速加载。@KeithBecker:任何不是代码段一部分的东西实际上在启动时都不会加载到RAM中。操作系统创建一个页面映射,当(如果)您最终访问它时,这些部分将被拉入内存。然而,这涉及的工作不仅仅是直接读取缓冲区。也就是说,相关页面必须出现故障,即内存管理器必须为这些页面分配一些系统的物理内存(这不是一个便宜的操作,实际上相当慢)。 #define glsl(version, glsl) "#version " #versio


ge可执行文件,如果代码段只有几kiB,它将像一个微小的可执行文件一样快速加载。@KeithBecker:任何不是代码段一部分的东西实际上在启动时都不会加载到RAM中。操作系统创建一个页面映射,当(如果)您最终访问它时,这些部分将被拉入内存。然而,这涉及的工作不仅仅是直接读取缓冲区。也就是说,相关页面必须出现故障,即内存管理器必须为这些页面分配一些系统的物理内存(这不是一个便宜的操作,实际上相当慢)。
#define glsl(version, glsl) "#version " #version "\n" #glsl

namespace glsl { namespace vs {
//VERTEX SHADERS
//=========================
// simple VS
//=========================
constexpr GLchar * const simple = glsl(450 core, 
    layout(location = 0) in vec3 position;

    void main() {
        gl_Position = vec4(position, 1.0f);
    }
    );

} namespace fs {
//FRAGMENT SHADERS
//=========================
// simple FS
//=========================
constexpr GLchar * const simple = glsl(450 core,
    out vec4 color;

    void main() {
        color = vec4(1.0f, 0.0f, 0.0f, 1.0f);
    }       
    );

} }