diff --git a/projects/first_triangle/shaders/shader.frag b/projects/first_triangle/shaders/shader.frag index 3363876e688e04c0941066b5549ae4fd9b3f507a..d26446a73020111695aa2c86166205796dfa5e44 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 9461e8f207aa283c258adcaff6359655fd62e9bb..246a3661031cc8d4582a12d4c8b91fce4af58cad 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 Binary files a/projects/first_triangle/shaders/vert.spv and b/projects/first_triangle/shaders/vert.spv differ diff --git a/projects/first_triangle/src/main.cpp b/projects/first_triangle/src/main.cpp index 5cafedcaf0af5ca82cc10be357b5a8afb9d9d3ed..b1a68c7fabc2519b9533d6d14b1eb9db2c81442c 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 c4a473801b2558cb21cc0f958c84746efc145dc2..23afd76937d4a8142bea6906a0792c9f02f87749 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 } );