| 106 | } |
| 107 | |
| 108 | void MyRenderer::CreateResources(const std::vector<VertexPos3Tex2>& vertices, const std::vector<std::uint32_t>& indices) |
| 109 | { |
| 110 | // Vertex format |
| 111 | LLGL::VertexFormat vertexFormat; |
| 112 | vertexFormat.AppendAttribute({ "position", LLGL::Format::RGB32Float }); |
| 113 | vertexFormat.AppendAttribute({ "texCoord", LLGL::Format::RG32Float }); |
| 114 | |
| 115 | // Create vertex buffer |
| 116 | vertexBuffer = renderer->CreateBuffer( |
| 117 | LLGL::VertexBufferDesc(sizeof(VertexPos3Tex2) * vertices.size(), vertexFormat), |
| 118 | vertices.data() |
| 119 | ); |
| 120 | |
| 121 | // Create index buffer |
| 122 | indexBuffer = renderer->CreateBuffer( |
| 123 | LLGL::IndexBufferDesc(sizeof(std::uint32_t) * indices.size(), LLGL::Format::R32UInt), |
| 124 | indices.data() |
| 125 | ); |
| 126 | |
| 127 | // Create constant buffer |
| 128 | constantBuffer = renderer->CreateBuffer(LLGL::ConstantBufferDesc(sizeof(Gs::Matrix4f))); |
| 129 | |
| 130 | // Create textures |
| 131 | const std::string texturePath = "../../Media/Textures/"; |
| 132 | texture = LoadTextureWithRenderer( |
| 133 | *renderer, |
| 134 | (texturePath + "Logo_" + rendererModule + ".png") |
| 135 | ); |
| 136 | |
| 137 | // Create samplers |
| 138 | LLGL::SamplerDescriptor samplerDesc; |
| 139 | { |
| 140 | samplerDesc.maxAnisotropy = 8; |
| 141 | } |
| 142 | sampler = renderer->CreateSampler(samplerDesc); |
| 143 | |
| 144 | // Create shaders |
| 145 | LLGL::Shader* vertShader = nullptr; |
| 146 | LLGL::Shader* fragShader = nullptr; |
| 147 | |
| 148 | const auto& languages = renderer->GetRenderingCaps().shadingLanguages; |
| 149 | |
| 150 | LLGL::ShaderDescriptor vertShaderDesc, fragShaderDesc; |
| 151 | |
| 152 | if (std::find(languages.begin(), languages.end(), LLGL::ShadingLanguage::HLSL) != languages.end()) |
| 153 | { |
| 154 | vertShaderDesc = LLGL::ShaderDescFromFile(LLGL::ShaderType::Vertex, "Example.hlsl", "VS", "vs_4_0"); |
| 155 | fragShaderDesc = LLGL::ShaderDescFromFile(LLGL::ShaderType::Fragment, "Example.hlsl", "PS", "ps_4_0"); |
| 156 | } |
| 157 | else if (std::find(languages.begin(), languages.end(), LLGL::ShadingLanguage::GLSL) != languages.end()) |
| 158 | { |
| 159 | vertShaderDesc = LLGL::ShaderDescFromFile(LLGL::ShaderType::Vertex, "Example.vert"); |
| 160 | fragShaderDesc = LLGL::ShaderDescFromFile(LLGL::ShaderType::Fragment, "Example.frag"); |
| 161 | } |
| 162 | else if (std::find(languages.begin(), languages.end(), LLGL::ShadingLanguage::SPIRV) != languages.end()) |
| 163 | { |
| 164 | vertShaderDesc = LLGL::ShaderDescFromFile(LLGL::ShaderType::Vertex, "Example.450core.vert.spv"); |
| 165 | fragShaderDesc = LLGL::ShaderDescFromFile(LLGL::ShaderType::Fragment, "Example.450core.frag.spv"); |
no test coverage detected