C++ 控制像素着色器的键盘输入

C++ 控制像素着色器的键盘输入,c++,opengl,glsl,hlsl,C++,Opengl,Glsl,Hlsl,上面的代码使用不同的计算来显示照明,在我拥有的像素着色器文件中。我需要从键盘控制它,它需要在main中声明,例如,VK_A将在我拥有的不同模式中循环。我如何着手实施这一点 你们通常是如何添加键盘控件来改变这一点的?感谢您为每种模式编译单独版本的着色器,可以手工编写,也可以使用字符串操作生成每组源代码 在应用程序中,在渲染受影响的几何体之前,跟踪当前模式并在设备上的每个帧上设置适当的着色器 您是否遇到了一些更具体的问题?使用多个着色器的替代方法是在着色器中使用一致性在不同的代码路径之间进行选择,并

上面的代码使用不同的计算来显示照明,在我拥有的像素着色器文件中。我需要从键盘控制它,它需要在main中声明,例如,VK_A将在我拥有的不同模式中循环。我如何着手实施这一点


你们通常是如何添加键盘控件来改变这一点的?感谢您

为每种模式编译单独版本的着色器,可以手工编写,也可以使用字符串操作生成每组源代码

在应用程序中,在渲染受影响的几何体之前,跟踪当前模式并在设备上的每个帧上设置适当的着色器


您是否遇到了一些更具体的问题?

使用多个着色器的替代方法是在着色器中使用一致性在不同的代码路径之间进行选择,并根据键盘输入循环该一致性的值

    //pixelcolour with ambient
    //pixelcolour = vec4( textureshade*shadescale + ambient* textureshade+ textureshade*diffuseshadescale, 1.0 );   

    //ambient           
    pixelcolour += vec4(ambient*textureshade,1.0);

    //diffuse
    //pixelcolour += vec4(textureshade*diffuseshadescale, 1.0);

    //ambient && diffuse
    //pixelcolour += vec4( ambient* textureshade+ textureshade*diffuseshadescale, 1.0 );

    //ambient && specular
    //shadescale= pow(dot(h,nn),shinyness);
    //pixelcolour += vec4 ( textureshade*shadescale + ambient* textureshade, 1.0 );

    //specular && diffuse
    //shadescale= pow(dot(h,nn),shinyness);
    //pixelcolour += vec4 ( textureshade*shadescale + textureshade*diffuseshadescale , 1.0 );

    //ambient && specular && diffuse
    //shadescale= pow(dot(h,nn),shinyness);
    //pixelcolour += vec4 ( textureshade*shadescale + textureshade*diffuseshadescale + ambient*textureshade, 1.0);