IDevice::createShaderProgram - dpw105f18/papago-api GitHub Wiki

Create a shader program

unique_ptr<IShaderProgram> createShaderProgram (IVertexShader &vertexShader, IFragmentShader &fragmentShader)

Returns

Returns a unique pointer to an IShaderProgram instance.

Parameters

Parameter Description
vertexShader vertexShader is a shader program contained in byte format, its used to create a full shaderprogram that is to be used in a renderpass.
fragmentShader fragmentShader is a shader program contained in byte format, its used used to create a full shaderprogram that is to be used in a renderpass.

Example of createShaderProgram

#include "isurface.hpp"
#include "idevice.hpp"
#include "parser.hpp"
#include "ishader_program.hpp"

int main()
{
   /*
  setup code omitted
  */
   //Find the GLSL-SPIRV compiler
   auto parser = Parser("[Path to VulkanSDK]/VulkanSDK/1.0.65.0/Bin32/glslangValidator.exe");

   //Compile the vertex and fragment shader from GLSL to SPIRV and store it in memory
   auto vertexShader = parser.compileVertexShader(readFile("shader/vertexShader.vert"),"main");
   auto fragmentShader = parser.compileFragmentShader(readFile("shader/fragmentShader.frag"),"main");

   //Use the vertex and fragment shader to create a complete shader program. This will be later used during render passes.
   auto shaderProgram = device->createShaderProgram(*vertexShader, *fragmentShader);
}