Compare commits
58 Commits
v1.0.0
..
311135e8a9
| Author | SHA1 | Date | |
|---|---|---|---|
|
311135e8a9
|
|||
|
1146a99c53
|
|||
|
7998ef448e
|
|||
|
d0521c19d9
|
|||
|
4e3c2f9983
|
|||
|
394d2dc358
|
|||
|
e64ba6870b
|
|||
|
3a9592bbd3
|
|||
|
422560a028
|
|||
|
87620b6e0c
|
|||
|
98b845f876
|
|||
|
f633db3070
|
|||
|
e69f907a96
|
|||
| afc4f50a20 | |||
| 39f52a959b | |||
| 22ae3e0351 | |||
| ef6941c47f | |||
| 99647be837 | |||
| f229c15bad | |||
| e73b4f3a14 | |||
| 9d70f19cac | |||
| 61e2da6bc8 | |||
| 228d12085a | |||
| 5c0c63a03b | |||
| 7b26a00ae3 | |||
| 027d066cbf | |||
| c583cbb829 | |||
| a54821aea0 | |||
| f7b4850b56 | |||
| c08c3d6bd1 | |||
| 8654cf72d8 | |||
| 64565bbff4 | |||
| 6333bc667c | |||
| 1a734cd185 | |||
| 156345ca11 | |||
| c55619d14d | |||
| 6feb886b73 | |||
| 19be22ebda | |||
| d273a23618 | |||
| 214e2e1862 | |||
| 6c0ed3f244 | |||
| 1205002094 | |||
| 5a257b7ae3 | |||
| 396ff9cedd | |||
| df70fc67b2 | |||
| 7f106fdd7f | |||
| fb371ac5bf | |||
| 4c3d180799 | |||
| 22012d6d24 | |||
| f109407049 | |||
| 0992e92d38 | |||
| 23a123437b | |||
| e299d56058 | |||
| 63989790d2 | |||
| 3ab869923f | |||
| 4cd1e43950 | |||
| 5920c7b965 | |||
| 1d40d2cd2a |
@@ -0,0 +1,45 @@
|
||||
name: Windows
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [create-pull-request]
|
||||
pull_request:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '.gitignore'
|
||||
- 'LICENSE'
|
||||
- 'README.md'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [windows-x86_64, macos-x86_64, ubuntu-latest]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
if: "!contains(github.event.head_commit.message, 'ci skip')"
|
||||
|
||||
steps:
|
||||
- name: Get current date as package key
|
||||
id: cache_key
|
||||
shell: bash
|
||||
run: echo "key=$(date +'%W')" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Set xmake env
|
||||
run: echo "XMAKE_GLOBALDIR=${{ runner.workspace }}/xmake-global" >> $GITHUB_ENV
|
||||
|
||||
- name: Setup xmake
|
||||
uses: xmake-io/github-action-setup-xmake@v1
|
||||
with:
|
||||
xmake-version: branch@master
|
||||
actions-cache-folder: .xmake-cache-W${{ steps.cache_key.outputs.key }}
|
||||
|
||||
- name: Update xmake repository
|
||||
run: cd sandbox && xmake repo --update
|
||||
|
||||
- name: Build test
|
||||
run: cd sandbox && xmake --yes
|
||||
@@ -2,3 +2,5 @@
|
||||
*.swp
|
||||
*.swx
|
||||
sandbox/test
|
||||
sandbox/build/
|
||||
sandbox/.xmake/
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# KVF
|
||||
# KVF <a href="https://git.kbz8.me/kbz_8/KVF/actions?workflows=CI.yml"><img src="https://git.kbz8.me/kbz_8/KVF/actions/workflows/CI.yml/badge.svg"></a>
|
||||
|
||||
KVF (kbz_8 vulkan framework) is a lightweight single-header Vulkan framework written in C99 to simplify the creation of Vulkan applications.
|
||||
It is designed to be a drop in framework inside any existing Vulkan renderer as it does not use any custom types of structs (except for the graphics pipeline builder).
|
||||
@@ -45,7 +45,7 @@ int main(void)
|
||||
// Swapchain creation
|
||||
VkExtent2D extent;
|
||||
SDL_Vulkan_GetDrawableSize(win, (int*)&extent.width, (int*)&extent.height);
|
||||
VkSwapchainKHR swapchain = kvfCreateSwapchainKHR(device, ph_device, surface, extent, true);
|
||||
VkSwapchainKHR swapchain = kvfCreateSwapchainKHR(device, ph_device, surface, extent, VK_NULL_HANDLE, true, true);
|
||||
|
||||
// Swapchain images acquisition
|
||||
uint32_t swapchain_images_count = kvfGetSwapchainImagesCount(swapchain);
|
||||
@@ -55,8 +55,8 @@ int main(void)
|
||||
for(uint32_t i = 0; i < swapchain_images_count; i++)
|
||||
{
|
||||
VkCommandBuffer cmd = kvfCreateCommandBuffer(device);
|
||||
kvfTransitionImageLayout(device, swapchain_images[i], cmd, kvfGetSwapchainImagesFormat(swapchain), VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, true);
|
||||
swapchain_images_views[i] = kvfCreateImageView(device, swapchain_images[i], kvfGetSwapchainImagesFormat(swapchain), VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_COLOR_BIT);
|
||||
kvfTransitionImageLayout(device, swapchain_images[i], KVF_IMAGE_COLOR, cmd, kvfGetSwapchainImagesFormat(swapchain), VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, true);
|
||||
swapchain_images_views[i] = kvfCreateImageView(device, swapchain_images[i], kvfGetSwapchainImagesFormat(swapchain), VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_COLOR_BIT, 1);
|
||||
}
|
||||
|
||||
// Sync objects creation
|
||||
@@ -85,10 +85,11 @@ int main(void)
|
||||
kvfGPipelineBuilderSetCullMode(builder, VK_CULL_MODE_NONE, VK_FRONT_FACE_CLOCKWISE);
|
||||
kvfGPipelineBuilderAddShaderStage(builder, VK_SHADER_STAGE_VERTEX_BIT, vertex_shader_module, "main");
|
||||
kvfGPipelineBuilderAddShaderStage(builder, VK_SHADER_STAGE_FRAGMENT_BIT, fragment_shader_module, "main");
|
||||
kvfGPipelineBuilderSetMultisampling(builder , VK_SAMPLE_COUNT_1_BIT);
|
||||
kvfGPipelineBuilderDisableDepthTest(builder);
|
||||
kvfGPipelineBuilderDisableBlending(builder);
|
||||
|
||||
VkPipeline pipeline = kvfCreateGraphicsPipeline(device, pipeline_layout, builder, renderpass);
|
||||
VkPipeline pipeline = kvfCreateGraphicsPipeline(device, VK_NULL_HANDLE, pipeline_layout, builder, renderpass);
|
||||
|
||||
kvfDestroyGPipelineBuilder(builder);
|
||||
kvfDestroyShaderModule(device, vertex_shader_module);
|
||||
@@ -152,3 +153,7 @@ int main(void)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
<p align="center">
|
||||
<img src="https://github.com/Kbz-8/KVF/blob/46aa29be4facef398aeab0b7e82bff84aab683ce/sandbox/screenshot.png" alt="drawing" width="500"/>
|
||||
</p>
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
NAME = ./test
|
||||
|
||||
CC = clang
|
||||
|
||||
all : $(NAME)
|
||||
|
||||
$(NAME):
|
||||
$(CC) -o $(NAME) main.c -lvulkan -lSDL2 -g
|
||||
|
||||
.PHONY: all
|
||||
+5
-4
@@ -80,7 +80,7 @@ int main(void)
|
||||
// Swapchain creation
|
||||
VkExtent2D extent;
|
||||
SDL_Vulkan_GetDrawableSize(win, (int*)&extent.width, (int*)&extent.height);
|
||||
VkSwapchainKHR swapchain = kvfCreateSwapchainKHR(device, ph_device, surface, extent, true);
|
||||
VkSwapchainKHR swapchain = kvfCreateSwapchainKHR(device, ph_device, surface, extent, VK_NULL_HANDLE, true, true);
|
||||
|
||||
// Swapchain images acquisition
|
||||
uint32_t swapchain_images_count = kvfGetSwapchainImagesCount(swapchain);
|
||||
@@ -90,8 +90,8 @@ int main(void)
|
||||
for(uint32_t i = 0; i < swapchain_images_count; i++)
|
||||
{
|
||||
VkCommandBuffer cmd = kvfCreateCommandBuffer(device);
|
||||
kvfTransitionImageLayout(device, swapchain_images[i], cmd, kvfGetSwapchainImagesFormat(swapchain), VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, true);
|
||||
swapchain_images_views[i] = kvfCreateImageView(device, swapchain_images[i], kvfGetSwapchainImagesFormat(swapchain), VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_COLOR_BIT);
|
||||
kvfTransitionImageLayout(device, swapchain_images[i], KVF_IMAGE_COLOR, cmd, kvfGetSwapchainImagesFormat(swapchain), VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, true);
|
||||
swapchain_images_views[i] = kvfCreateImageView(device, swapchain_images[i], kvfGetSwapchainImagesFormat(swapchain), VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_COLOR_BIT, 1);
|
||||
}
|
||||
|
||||
// Sync objects creation
|
||||
@@ -118,12 +118,13 @@ int main(void)
|
||||
kvfGPipelineBuilderSetInputTopology(builder, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST);
|
||||
kvfGPipelineBuilderSetPolygonMode(builder, VK_POLYGON_MODE_FILL, 1.0f);
|
||||
kvfGPipelineBuilderSetCullMode(builder, VK_CULL_MODE_NONE, VK_FRONT_FACE_CLOCKWISE);
|
||||
kvfGPipelineBuilderSetMultisampling(builder, VK_SAMPLE_COUNT_1_BIT);
|
||||
kvfGPipelineBuilderAddShaderStage(builder, VK_SHADER_STAGE_VERTEX_BIT, vertex_shader_module, "main");
|
||||
kvfGPipelineBuilderAddShaderStage(builder, VK_SHADER_STAGE_FRAGMENT_BIT, fragment_shader_module, "main");
|
||||
kvfGPipelineBuilderDisableDepthTest(builder);
|
||||
kvfGPipelineBuilderDisableBlending(builder);
|
||||
|
||||
VkPipeline pipeline = kvfCreateGraphicsPipeline(device, pipeline_layout, builder, renderpass);
|
||||
VkPipeline pipeline = kvfCreateGraphicsPipeline(device, VK_NULL_HANDLE, pipeline_layout, builder, renderpass);
|
||||
|
||||
kvfDestroyGPipelineBuilder(builder);
|
||||
kvfDestroyShaderModule(device, vertex_shader_module);
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,11 @@
|
||||
add_requires("libsdl2", { configs = { sdlmain = false } })
|
||||
add_requires("vulkan-headers")
|
||||
|
||||
target("test")
|
||||
set_kind("binary")
|
||||
add_linkdirs("./")
|
||||
add_files("main.c", { languages = "c99" })
|
||||
add_defines("SDL_MAIN_HANDLED")
|
||||
add_packages("libsdl2", "vulkan-headers")
|
||||
add_syslinks("vulkan")
|
||||
target_end()
|
||||
Reference in New Issue
Block a user