Multiple changes + fixes
This commit is contained in:
@@ -8,7 +8,16 @@
|
||||
|
||||
evstring PROJECT_NAME = evstr("basic_triangle");
|
||||
|
||||
int main(void)
|
||||
char vertexShaderBytes[] = {
|
||||
#embed "shaders/basic_triangle.vert"
|
||||
,'\0'
|
||||
};
|
||||
char fragmentShaderBytes[] = {
|
||||
#embed "shaders/basic_triangle.frag"
|
||||
,'\0'
|
||||
};
|
||||
|
||||
int main(void)
|
||||
{
|
||||
u32 width = 1280;
|
||||
u32 height = 800;
|
||||
@@ -82,7 +91,7 @@ int main(void)
|
||||
}
|
||||
|
||||
VkSurfaceKHR surface;
|
||||
VkResult err = glfwCreateWindowSurface(instance.vk, window, NULL, &surface);
|
||||
VkResult err = EVK_CHECK(glfwCreateWindowSurface(instance.vk, window, NULL, &surface));
|
||||
if (err)
|
||||
{
|
||||
ev_log_error("Surface creation failed.");
|
||||
@@ -99,8 +108,8 @@ int main(void)
|
||||
.imageCount = 3,
|
||||
});
|
||||
|
||||
evkCommandPool commandPool = evkCreateCommandPool((evkCommandPoolCreateInfo) {
|
||||
.device = device,
|
||||
evkCommandPool commandPool = evkCreateCommandPool((evkCommandPoolCreateInfo) {
|
||||
.device = device,
|
||||
.queueFlags = VK_QUEUE_GRAPHICS_BIT,
|
||||
.poolFlags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
|
||||
});
|
||||
@@ -109,9 +118,15 @@ int main(void)
|
||||
|
||||
evkShaderCompiler compiler = evkCreateShaderCompiler();
|
||||
|
||||
evkShader vertShader = evkInitShaderFromFile(device, compiler, "shaders/basic_triangle.vert");
|
||||
evkShader fragShader = evkInitShaderFromFile(device, compiler, "shaders/basic_triangle.frag");
|
||||
|
||||
evstring vertexShaderText = evstring_new(vertexShaderBytes);
|
||||
evstring fragmentShaderText = evstring_new(fragmentShaderBytes);
|
||||
|
||||
evkShader vertShader = evkInitShaderFromString(device, compiler, evstr("basic_triangle.vert"),vertexShaderText);
|
||||
evkShader fragShader = evkInitShaderFromString(device, compiler, evstr("basic_triangle.frag"), fragmentShaderText);
|
||||
|
||||
evstring_free(vertexShaderText);
|
||||
evstring_free(fragmentShaderText);
|
||||
|
||||
evkDestroyShaderCompiler(compiler);
|
||||
|
||||
evkColorAttachment colorAttachment0 = {
|
||||
@@ -122,25 +137,26 @@ int main(void)
|
||||
// TODO Get this from shader reflection data
|
||||
// evkDescriptorSetLayout setLayout_0 = evkCreateDescriptorSetLayout(
|
||||
// &device, svec_init(evkDescriptorBinding, {
|
||||
// {
|
||||
// .name = evstr("positions"),
|
||||
// .binding = 0,
|
||||
// .descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
||||
// .descriptorCount = 1,
|
||||
// .stageFlags = VK_SHADER_STAGE_ALL_GRAPHICS,
|
||||
// {
|
||||
// .name = evstr("positions"),
|
||||
// .binding = 0,
|
||||
// .descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
|
||||
// .descriptorCount = 1,
|
||||
// .stageFlags = VK_SHADER_STAGE_ALL_GRAPHICS,
|
||||
// },
|
||||
// })
|
||||
// );
|
||||
// evkDescriptorSetLayout setLayout_0 = evkCreateDescriptorSetLayoutFromBindings(&device, vertShader.reflect.bindings);
|
||||
|
||||
evkDescriptorSetLayout setLayout_0 = evkCreateDescriptorSetLayoutFromShaders(&device, svec_init(evkShader, {vertShader, fragShader}));
|
||||
|
||||
evkPipelineCreateInfo pipelineCreateInfo = EV_DEFAULT(evkPipelineCreateInfo,
|
||||
dynamicStates = svec_init(VkDynamicState, {
|
||||
VK_DYNAMIC_STATE_VIEWPORT,
|
||||
dynamicStates = svec_init(VkDynamicState, {
|
||||
VK_DYNAMIC_STATE_VIEWPORT,
|
||||
VK_DYNAMIC_STATE_SCISSOR,
|
||||
}),
|
||||
shaderStages = svec_init(evkShader, {
|
||||
vertShader,
|
||||
vertShader,
|
||||
fragShader,
|
||||
}),
|
||||
colorAttachments = svec_init(evkColorAttachment, {
|
||||
@@ -158,8 +174,8 @@ int main(void)
|
||||
);
|
||||
|
||||
evkDescriptorSet set_0 = evkCreateDescriptorSet(&(evkDescriptorSetCreateInfo){
|
||||
.device = &device,
|
||||
.allocator = &allocator,
|
||||
.device = &device,
|
||||
.allocator = &allocator,
|
||||
.layout = &setLayout_0
|
||||
});
|
||||
|
||||
@@ -228,7 +244,7 @@ int main(void)
|
||||
{
|
||||
imageIdx = (imageIdx + 1) % imageCount;
|
||||
u32 swapChainImageIdx;
|
||||
EVK_ASSERT(vkAcquireNextImageKHR(device.vk, swapChain.vk, UInt64.MAX, imageAcquiredSemaphores[imageIdx], VK_NULL_HANDLE, &swapChainImageIdx));
|
||||
EVK_CHECK(vkAcquireNextImageKHR(device.vk, swapChain.vk, UInt64.MAX, imageAcquiredSemaphores[imageIdx], VK_NULL_HANDLE, &swapChainImageIdx));
|
||||
|
||||
evkCommandBuffer cmdbuf = commandBuffers[imageIdx];
|
||||
|
||||
@@ -269,6 +285,7 @@ int main(void)
|
||||
|
||||
evkCmdImageBarrier(&cmdbuf, EV_DEFAULT(VkImageMemoryBarrier,
|
||||
image = swapChain.images[swapChainImageIdx].vk,
|
||||
oldLayout = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR,
|
||||
newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
|
||||
subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT
|
||||
));
|
||||
@@ -321,6 +338,9 @@ int main(void)
|
||||
|
||||
evkDestroyPipeline(graphicsPipeline);
|
||||
|
||||
evkDestroyBuffer(vertBuf);
|
||||
evkDestroyBuffer(uniBuf);
|
||||
|
||||
evkDestroyDescriptorSet(&device, &set_0);
|
||||
evkDestroyDescriptorSetLayout(&device, &setLayout_0);
|
||||
|
||||
@@ -330,6 +350,8 @@ int main(void)
|
||||
evkFreeCommandBuffers(device, commandPool, commandBuffers);
|
||||
evkDestroyCommandPool(device, commandPool);
|
||||
|
||||
evkGPUDestroyAllocator(allocator);
|
||||
|
||||
evkDestroySwapChain(device, swapChain);
|
||||
|
||||
// SwapchainCreationFailed:
|
||||
@@ -346,4 +368,4 @@ DeviceCreationFailed:
|
||||
evkDestroyInstance(instance);
|
||||
InstanceCreationFailed:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
#version 450
|
||||
#pragma shader_stage(vertex)
|
||||
|
||||
// in layout(location=0) vec2 position;
|
||||
in layout(location=0) vec2 position;
|
||||
|
||||
layout(set=0, binding=0) uniform data {
|
||||
vec4 positions[3];
|
||||
@@ -12,4 +12,5 @@ void main() {
|
||||
// gl_Position = vec4(position, 0.0, 1.0);
|
||||
// gl_Position = vec4(inputData.positions[gl_VertexIndex], 0.0, 1.0);
|
||||
gl_Position = vertexData.positions[gl_VertexIndex];
|
||||
}
|
||||
// gl_Position = vec4(position, 0.0, 1.0);
|
||||
}
|
||||
Reference in New Issue
Block a user