From 43f31b4c398a628636b0e1d6cc68bd2ee68d204b Mon Sep 17 00:00:00 2001 From: Alexander Gauggel <agauggel@uni-koblenz.de> Date: Sun, 16 May 2021 13:08:37 +0200 Subject: [PATCH] build basic graphics pipeline --- projects/first_triangle/shaders/shader.frag | 1 - projects/first_triangle/shaders/shader.vert | 4 +--- projects/first_triangle/shaders/vert.spv | Bin 1116 -> 1056 bytes projects/first_triangle/src/main.cpp | 21 ++++++++++++++++---- src/vkcv/Core.cpp | 4 ++-- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/projects/first_triangle/shaders/shader.frag b/projects/first_triangle/shaders/shader.frag index 3363876e..d26446a7 100644 --- a/projects/first_triangle/shaders/shader.frag +++ b/projects/first_triangle/shaders/shader.frag @@ -2,7 +2,6 @@ #extension GL_ARB_separate_shader_objects : enable layout(location = 0) in vec3 fragColor; - layout(location = 0) out vec4 outColor; void main() { diff --git a/projects/first_triangle/shaders/shader.vert b/projects/first_triangle/shaders/shader.vert index 9461e8f2..246a3661 100644 --- a/projects/first_triangle/shaders/shader.vert +++ b/projects/first_triangle/shaders/shader.vert @@ -2,11 +2,9 @@ #extension GL_ARB_separate_shader_objects : enable layout(location = 0) in vec2 inPosition; -layout(location = 1) in vec3 inColor; - layout(location = 0) out vec3 fragColor; void main() { gl_Position = vec4(inPosition, 0.0, 1.0); - fragColor = inColor; + fragColor = vec3(1); } \ No newline at end of file diff --git a/projects/first_triangle/shaders/vert.spv b/projects/first_triangle/shaders/vert.spv index 4e979164bba0448a8d9b7f58356c924163bd6df4..7692f2cf09e53183c613f81db748d798a2e18fab 100644 GIT binary patch delta 109 zcmcb^v4De@nMs+Qfq{{Mi-DIxej=}_GzS9+urM$%<R)h3f!MqZ3=BdH3=Fax6P+0+ xZ(*$2?7-x~D5}H2#vskWz#zxKz#t04lb1427O`VsW{`!-{AFNduwY<h0002b4Tk^# delta 167 zcmZ3$afgGKnMs+Qfq{{Mi-DIxaU!p&JSPJPurM$%<R)h3f!MqZ3=BdH3=Fai3=Hxc zW1SiKSs7Ru<QW(kGV`4CbMlKO&u6UVb%%<{F)%PNZkA;7W|UQ6U||4r85kI(85kI> op?r{5#>th;lT~aPSimw0Afp)=80;9B!PbEIe;F7VEEpIW0BIc&&Hw-a diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp index 5cafedca..b1a68c7f 100644 --- a/projects/first_triangle/src/main.cpp +++ b/projects/first_triangle/src/main.cpp @@ -6,11 +6,13 @@ int main(int argc, const char** argv) { const char* applicationName = "First Triangle"; + const int windowWidth = 800; + const int windowHeight = 600; vkcv::Window window = vkcv::Window::create( - applicationName, - 800, - 600, - false + applicationName, + windowWidth, + windowHeight, + false ); vkcv::Core core = vkcv::Core::create( @@ -56,6 +58,17 @@ int main(int argc, const char** argv) { return EXIT_FAILURE; } + vkcv::ShaderProgram triangleShaderProgram = vkcv::ShaderProgram::create(); + triangleShaderProgram.addShader(vkcv::ShaderProgram::ShaderStage::VERTEX, "shaders/vert.spv"); + triangleShaderProgram.addShader(vkcv::ShaderProgram::ShaderStage::FRAGMENT, "shaders/frag.spv"); + + const vkcv::Pipeline trianglePipelineDefinition(triangleShaderProgram, windowWidth, windowHeight, trianglePass); + vkcv::PipelineHandle trianglePipeline; + if (!core.createGraphicsPipeline(trianglePipelineDefinition, trianglePipeline)) { + std::cout << "Error. Could not create graphics pipeline. Exiting." << std::endl; + return EXIT_FAILURE; + } + /* * BufferHandle triangleVertices = core.createBuffer(vertices); * BufferHandle triangleIndices = core.createBuffer(indices); diff --git a/src/vkcv/Core.cpp b/src/vkcv/Core.cpp index c4a47380..23afd769 100644 --- a/src/vkcv/Core.cpp +++ b/src/vkcv/Core.cpp @@ -530,7 +530,7 @@ namespace vkcv } bool Core::createGraphicsPipeline(const Pipeline& pipeline, PipelineHandle& handle) { - + // TODO: this search could be avoided if ShaderProgram could be queried for a specific stage const auto shaderStageFlags = pipeline.m_shaderProgram.getShaderStages(); const auto shaderCode = pipeline.m_shaderProgram.getShaderCode(); @@ -651,7 +651,7 @@ namespace vkcv {}, false, vk::LogicOp::eClear, - 0, + 1, //TODO: hardcoded to one &colorBlendAttachmentState, { 1.f,1.f,1.f,1.f } ); -- GitLab