MCPcopy Create free account
hub / github.com/SFML/SFML / setupShaders

Method setupShaders

examples/vulkan/Vulkan.cpp:903–976  ·  view source on GitHub ↗

Load vertex and fragment shader modules

Source from the content-addressed store, hash-verified

901
902 // Load vertex and fragment shader modules
903 void setupShaders()
904 {
905 VkShaderModuleCreateInfo shaderModuleCreateInfo = VkShaderModuleCreateInfo();
906 shaderModuleCreateInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
907
908 // Use the vertex shader SPIR-V code to create a vertex shader module
909 {
910 sf::FileInputStream file;
911 if (!file.open("resources/shader.vert.spv"))
912 {
913 vulkanAvailable = false;
914 return;
915 }
916
917 const auto fileSize = file.getSize().value();
918 std::vector<std::uint32_t> buffer(fileSize / sizeof(std::uint32_t));
919
920 if (file.read(buffer.data(), fileSize) != file.getSize())
921 {
922 vulkanAvailable = false;
923 return;
924 }
925
926 shaderModuleCreateInfo.codeSize = buffer.size() * sizeof(std::uint32_t);
927 shaderModuleCreateInfo.pCode = buffer.data();
928
929 if (vkCreateShaderModule(device, &shaderModuleCreateInfo, nullptr, &vertexShaderModule) != VK_SUCCESS)
930 {
931 vulkanAvailable = false;
932 return;
933 }
934 }
935
936 // Use the fragment shader SPIR-V code to create a fragment shader module
937 {
938 sf::FileInputStream file;
939 if (!file.open("resources/shader.frag.spv"))
940 {
941 vulkanAvailable = false;
942 return;
943 }
944
945 const auto fileSize = file.getSize().value();
946 std::vector<std::uint32_t> buffer(fileSize / sizeof(std::uint32_t));
947
948 if (file.read(buffer.data(), fileSize) != file.getSize())
949 {
950 vulkanAvailable = false;
951 return;
952 }
953
954 shaderModuleCreateInfo.codeSize = buffer.size() * sizeof(std::uint32_t);
955 shaderModuleCreateInfo.pCode = buffer.data();
956
957 if (vkCreateShaderModule(device, &shaderModuleCreateInfo, nullptr, &fragmentShaderModule) != VK_SUCCESS)
958 {
959 vulkanAvailable = false;
960 return;

Callers

nothing calls this directly

Calls 5

openMethod · 0.45
getSizeMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected