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);
|
||||
|
||||
// create vertex shader
|
||||
mijin::TypelessBuffer vertexSpv = getFileContentsBinary("shaders/glsl/textured_triangles_from_buffer.vert.spv");
|
||||
sdlpp::GPUShader vertexShader;
|
||||
vertexShader.create(mDevice, {
|
||||
.code = {static_cast<const Uint8*>(vertexSpv.data()), vertexSpv.byteSize()},
|
||||
// create shaders
|
||||
sdlpp::GPUShader vertexShader = loadShader("shaders/glsl/textured_triangles_from_buffer.vert.spv", {
|
||||
.format = sdlpp::GPUShaderFormat::SPIRV,
|
||||
.stage = sdlpp::GPUShaderStage::VERTEX
|
||||
});
|
||||
|
||||
// create fragment shader
|
||||
mijin::TypelessBuffer fragmentSpv = getFileContentsBinary("shaders/glsl/color_from_texcoord.frag.spv");
|
||||
sdlpp::GPUShader fragmentShader;
|
||||
fragmentShader.create(mDevice, {
|
||||
.code = {static_cast<const Uint8*>(fragmentSpv.data()), fragmentSpv.byteSize()},
|
||||
.format = sdlpp::GPUShaderFormat::SPIRV,
|
||||
.stage = sdlpp::GPUShaderStage::FRAGMENT,
|
||||
.numUniformBuffers = 1
|
||||
sdlpp::GPUShader fragmentShader = loadShader("shaders/glsl/color_from_texcoord.frag.spv", {
|
||||
.format = sdlpp::GPUShaderFormat::SPIRV,
|
||||
.stage = sdlpp::GPUShaderStage::FRAGMENT,
|
||||
.numUniformBuffers = 1
|
||||
});
|
||||
|
||||
// create graphics pipeline
|
||||
|
@ -73,4 +73,13 @@ mijin::TypelessBuffer Application::getFileContentsBinary(const fs::path& path)
|
||||
mijin::throwOnError(stream->readRest(content), "Error reading file contents.");
|
||||
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
|
||||
[[nodiscard]]
|
||||
std::string getFileContentsText(const fs::path& path);
|
||||
std::string getFileContentsText(const fs::path& path) ;
|
||||
|
||||
[[nodiscard]]
|
||||
mijin::TypelessBuffer getFileContentsBinary(const fs::path& path);
|
||||
|
||||
[[nodiscard]]
|
||||
sdlpp::GPUShader loadShader(const fs::path& path, sdlpp::GPUShaderCreateArgs args);
|
||||
|
||||
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>
|
||||
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;
|
||||
transferBuffer.create(mDevice, {
|
||||
|
Loading…
x
Reference in New Issue
Block a user