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