.NET 9.0 使用 Vulkan API 编写跨平台图形应用
前言
大家好,这次我来分享一下我自己实现的一个 Vulkan 库,这个库是用 C# 实现的,主要是为了学习 Vulkan 而写的。
在学习 Vulkan 的过程中,我主要参考 veldrid,它是一个基于 .NET 的跨平台图形库,支持 OpenGL、Vulkan、Direct3D 11 等图形 API。
我觉得这个库的设计思路很好,于是我就想自己实现一个类似的库,于是就有了这个项目。
该项目光线追踪部分的封装参考的 Evergine, 它有着非常全面的图形接口抽象,其结构与 veldrid 十分相似,目前该平台对个人免费,大家如有兴趣可以尝试。
项目依赖
- Vulkan 1.3 SDK:大家可以自行去 LunarG 官网下载最新版本 SDK,或者 百度、必应 搜索 Vulkan SDK 一般第一个链接就是。
- Visual Studio 2022
- .NET 9.0 SDK
- 支持 Vulkan 1.3 的桌面端设备。
如果要运行 Android 项目,需要安装 Android NDK 和 Android SDK,虚拟机不支持 Vulkan 1.3,需要真机 Snapdragon 8 Gen2 或更高芯片。
截图
| AndroidApp | |||
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| ComputeShader |
|---|
![]() |
| GLTFAnimation |
|---|
![]() |
| GLTFScene |
|---|
![]() |
| MultiViewports |
|---|
![]() |
| RayQuery |
|---|
![]() |
| RayTracing |
|---|
![]() |
| SDFFontTexture |
|---|
![]() |
| Skia |
|---|
![]() |
| WPF |
|---|
![]() |
项目地址
参考
.NET 9.0 使用 Vulkan API 编写跨平台图形应用的更多相关文章
- 如何编写跨平台的Java代码
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- 编写跨平台Java程序注意事项
使用Java语言编写应用程序最大的优点在于“一次编译,处处运行”,然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的,那么如何才能编写 ...
- RESTful API 编写指南
基于一些不错的RESTful开发组件,可以快速的开发出不错的RESTful API,但如果不了解开发规范的.健壮的RESTful API的基本面,即便优秀的RESTful开发组件摆在面前,也无法很好的 ...
- 通过Intel XDK编写跨平台app(二)
通过Intel XDK编写跨平台app(一) 通过Intel XDK编写跨平台app(二) 在这个系列的上一篇文章中,我们大致了解了Interl XDK的概况.在这一部分中,我们会详细地介绍如何通过这 ...
- 用React Native编写跨平台APP
用React Native编写跨平台APP React Native 是一个编写iOS与Android平台实时.原生组件渲染的应用程序的框架.它基于React,Facebook的JavaScript的 ...
- DotNetty编写跨平台网络通信
DotNetty编写跨平台网络通信 长久以来,.Net开发人员都非常羡慕Java有Netty这样,高效,稳定又易用的网络通信基础框架.终于微软的Azure团队,使用C#实现的Netty的版本发布.不但 ...
- 使用 Vulkan * API 并行渲染对象
Vulkan API 是业界最热门的新技术之一.它们支持多线程编程,可以简化跨平台开发,而且主要的芯片.GPU 和设备制造商都为其提供支持.Vulkan API 有望成为未来主流图形渲染平台之一.该平 ...
- 从 MVC 到使用 ASP.NET Core 6.0 的最小 API
从 MVC 到使用 ASP.NET Core 6.0 的最小 API https://benfoster.io/blog/mvc-to-minimal-apis-aspnet-6/ 2007 年,随着 ...
- ElasticSearch 5.0.1 java API操作
今天来说下使用ES 5.0.1的API来进行编码. 开始之前,简单说下5.0.1跟之前的几个变化.之前的ES自身是不支持delete-by-query的,也就是通过查询来删除,可以达到批量的效果,是因 ...
- 使用OAuth2.0访问豆瓣API
如何计算某个用户的access_token过期时间?开发者可以通过两种方式计算:用户授权时,oauth2/access_token接口返回的expires_in值就是access_token的生命周期 ...
随机推荐
- ESP8266 + MQTT + 土壤湿度传感器
ESP8266 + MQTT + 土壤湿度传感器 连线 #include <Arduino.h> #include <Ticker.h> #include <ESP826 ...
- TextIn ParseX文档解析SDK工具新增Java版本
TextIn ParseX通用文档解析是一款大模型友好的解析工具,支持将pdf文档.jpg.img图像等文件快速转换为markdown格式,支持各类表格.公式解析,帮助大语言模型的数据清洗和文档问答任 ...
- SQL Server如何定期自动备份数据库
打开SQL Server代理服务 实现自动备份功能,首先要保证SQL Server的"SQL Server(代理)"服务已经打开. 如果没有看到这个"SQL Server ...
- Help document of CAD Plus
中文使用帮助 Help for Mobile Update time: 2023-07-29; This article will help you how to use the CAD Plus a ...
- 批量归一化(BN, Batch Normalization)
现在的神经网络通常都特别深,在输出层向输入层传播导数的过程中,梯度很容易被激活函数或是权重以指数级的规模缩小或放大,从而产生"梯度消失"或"梯度爆炸"的现象,造 ...
- Getting Flex 3 talking to Java via JSON
packagecom.giantflyingsaucer; importjava.io.*; importjava.io.PrintWriter; importjavax.servlet.*; imp ...
- MySQL之数据排序
在MySQL中,我们经常需要从数据库中检索数据,并根据特定的要求对数据进行排序.通常情况下,我们会根据数据中某一列的值进行排序,例如按照价格从低到高或从高到低对商品进行排序.但有时候,我们需要在数据中 ...
- README.md书写范例
具体参考: https://learnku.com/docs/laravel-specification/5.5/readme-examplemd/523
- 一个使用 WPF 开发的管理系统
前言 最近发现有不少小伙伴在学习 WPF,今天大姚给大家分享一个使用 WPF 开发的管理系统,该项目包含了用户登录.人员管理.角色授权.插件管理.职位管理.主页功能(邮件.皮肤.设置)等功能,对于一个 ...
- ChatGPT在功能测试用例生成方面的优势
功能测试是软件测试的非常重要的分类,所有软件系统都要保证功能的正确性,而测试用例则是功能测试的重中之重.测试用例的编写是测试人员必须认真面对的一件耗时费力.枯燥乏味的工作.如何才能快速高效地编写测试用 ...












