Added dynamic state

This commit is contained in:
Warwick New 2025-01-06 16:30:47 +00:00
parent 5a1dcf9151
commit 829e3fd3d8
6 changed files with 48 additions and 20 deletions

View file

@ -3,5 +3,5 @@
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
cd $SCRIPT_DIR
glslc shaders/shader.vert -o shaders/shader.vert.spv
glslc shaders/shader.frag -o shaders/shader.frag.spv
glslc -fshader-stage=vert shaders/shader.vert.glsl -o shaders/shader.vert.spv
glslc -fshader-stage=frag shaders/shader.frag.glsl -o shaders/shader.frag.spv

View file

@ -1,7 +0,0 @@
#version 450
layout (location = 0) out vec4 outColor;
void main() {
outColor = vec4(0.0, 1.0, 0.0, 1.0);
}

10
shaders/shader.frag.glsl Normal file
View file

@ -0,0 +1,10 @@
#version 450
layout(location = 0) in vec3 fragColor;
layout(location = 0) out vec4 outColor;
void main() {
outColor = vec4(fragColor, 1.0);
}

View file

@ -1,11 +0,0 @@
#version 450
vec2 positions[3] = vec2[] (
vec2(0.0,-0.5),
vec2(0.5,0.5),
vec2(-0.5,0.5)
);
void main() {
gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0);
}

20
shaders/shader.vert.glsl Normal file
View file

@ -0,0 +1,20 @@
#version 450
layout(location = 0) out vec3 fragColor;
vec2 positions[3] = vec2[](
vec2(0.0, -0.5),
vec2(0.5, 0.5),
vec2(-0.5, 0.5)
);
vec3 colors[3] = vec3[](
vec3(1.0, 0.0, 0.0),
vec3(0.0, 1.0, 0.0),
vec3(0.0, 0.0, 1.0)
);
void main() {
gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0);
fragColor = colors[gl_VertexIndex];
}

View file

@ -697,6 +697,22 @@ void createGraphicsPipeline(Application *app) {
VkPipelineShaderStageCreateInfo shaderStages[] = {vertShaderStageInfo,
fragShaderStageInfo};
size_t dynamicStatesCount = 2;
VkDynamicState dynamicStates[] = {VK_DYNAMIC_STATE_VIEWPORT,
VK_DYNAMIC_STATE_SCISSOR};
VkPipelineDynamicStateCreateInfo dynamicState = {0};
dynamicState.sType = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO;
dynamicState.dynamicStateCount = dynamicStatesCount;
dynamicState.pDynamicStates = dynamicStates;
VkPipelineVertexInputStateCreateInfo vertexInputInfo = {0};
vertexInputInfo.sType =
VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO;
vertexInputInfo.vertexBindingDescriptionCount = 0;
vertexInputInfo.pVertexBindingDescriptions = NULL; // Optional
vertexInputInfo.vertexAttributeDescriptionCount = 0;
vertexInputInfo.pVertexAttributeDescriptions = NULL; // Optional
vkDestroyShaderModule(app->device, fragShaderModule, NULL);
vkDestroyShaderModule(app->device, vertShaderModule, NULL);
}