Added loadShader() utility function.
This commit is contained in:
parent
853e55322c
commit
9095c7e99a
@ -16,23 +16,15 @@ void TriangleWithTexcoordsApp::init(const AppInitArgs& args)
|
|||||||
{
|
{
|
||||||
Application::init(args);
|
Application::init(args);
|
||||||
|
|
||||||
// create vertex shader
|
// create shaders
|
||||||
mijin::TypelessBuffer vertexSpv = getFileContentsBinary("shaders/glsl/textured_triangles_from_buffer.vert.spv");
|
sdlpp::GPUShader vertexShader = loadShader("shaders/glsl/textured_triangles_from_buffer.vert.spv", {
|
||||||
sdlpp::GPUShader vertexShader;
|
|
||||||
vertexShader.create(mDevice, {
|
|
||||||
.code = {static_cast<const Uint8*>(vertexSpv.data()), vertexSpv.byteSize()},
|
|
||||||
.format = sdlpp::GPUShaderFormat::SPIRV,
|
.format = sdlpp::GPUShaderFormat::SPIRV,
|
||||||
.stage = sdlpp::GPUShaderStage::VERTEX
|
.stage = sdlpp::GPUShaderStage::VERTEX
|
||||||
});
|
});
|
||||||
|
sdlpp::GPUShader fragmentShader = loadShader("shaders/glsl/color_from_texcoord.frag.spv", {
|
||||||
// create fragment shader
|
.format = sdlpp::GPUShaderFormat::SPIRV,
|
||||||
mijin::TypelessBuffer fragmentSpv = getFileContentsBinary("shaders/glsl/color_from_texcoord.frag.spv");
|
.stage = sdlpp::GPUShaderStage::FRAGMENT,
|
||||||
sdlpp::GPUShader fragmentShader;
|
.numUniformBuffers = 1
|
||||||
fragmentShader.create(mDevice, {
|
|
||||||
.code = {static_cast<const Uint8*>(fragmentSpv.data()), fragmentSpv.byteSize()},
|
|
||||||
.format = sdlpp::GPUShaderFormat::SPIRV,
|
|
||||||
.stage = sdlpp::GPUShaderStage::FRAGMENT,
|
|
||||||
.numUniformBuffers = 1
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// create graphics pipeline
|
// create graphics pipeline
|
||||||
|
@ -73,4 +73,13 @@ mijin::TypelessBuffer Application::getFileContentsBinary(const fs::path& path)
|
|||||||
mijin::throwOnError(stream->readRest(content), "Error reading file contents.");
|
mijin::throwOnError(stream->readRest(content), "Error reading file contents.");
|
||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sdlpp::GPUShader Application::loadShader(const fs::path& path, sdlpp::GPUShaderCreateArgs args)
|
||||||
|
{
|
||||||
|
mijin::TypelessBuffer source = getFileContentsBinary(path);
|
||||||
|
sdlpp::GPUShader shader;
|
||||||
|
args.code = {static_cast<const Uint8*>(source.data()), source.byteSize()};
|
||||||
|
shader.create(mDevice, args);
|
||||||
|
return shader;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,17 +47,20 @@ public:
|
|||||||
|
|
||||||
// utility stuff
|
// utility stuff
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
std::string getFileContentsText(const fs::path& path);
|
std::string getFileContentsText(const fs::path& path) ;
|
||||||
|
|
||||||
[[nodiscard]]
|
[[nodiscard]]
|
||||||
mijin::TypelessBuffer getFileContentsBinary(const fs::path& path);
|
mijin::TypelessBuffer getFileContentsBinary(const fs::path& path);
|
||||||
|
|
||||||
|
[[nodiscard]]
|
||||||
|
sdlpp::GPUShader loadShader(const fs::path& path, sdlpp::GPUShaderCreateArgs args);
|
||||||
|
|
||||||
template<typename TVertex>
|
template<typename TVertex>
|
||||||
void uploadVertexData(const sdlpp::GPUBuffer& vertexBuffer, std::span<TVertex> vertices);
|
void uploadVertexData(const sdlpp::GPUBuffer& vertexBuffer, std::span<TVertex> vertices) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename TVertex>
|
template<typename TVertex>
|
||||||
void Application::uploadVertexData(const sdlpp::GPUBuffer& vertexBuffer, std::span<TVertex> vertices)
|
void Application::uploadVertexData(const sdlpp::GPUBuffer& vertexBuffer, std::span<TVertex> vertices) const
|
||||||
{
|
{
|
||||||
sdlpp::GPUTransferBuffer transferBuffer;
|
sdlpp::GPUTransferBuffer transferBuffer;
|
||||||
transferBuffer.create(mDevice, {
|
transferBuffer.create(mDevice, {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user