回顾
(相关资料图)
上一期技术分享中,已经讲述了关于Vulkan的前世今生,以及和OpenGL相比的不同点也放出第一个Vulkan的sample工程以供大家学习使用。当然,如果在学习过程中有任何问题,可以随时留言给我们,也欢迎大家移步至我们刚上线的开发者社区中交流和分享。
这一期将会给大家带来关于Vulkan基础的图形绘制方面内容,如何使用Vulkan绘制一些基础图形,以及渲染流程又是什么样的?
Vulkan图形拓扑 – 图元装配描述
图元装配描述,即对输入的顶点,到底构成什么图形,比如直线、三角形等,进行设置。介绍下Vulkan支持的主要图形拓扑:
VK_PRIMITIVE_TOPOLOGY_POINT_LIST: 点集VK_PRIMITIVE_TOPOLOGY_LINE_LIST: 线集VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: 连续线VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:三角形集合VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:连续三角形
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:呈扇形的三角形集合
Typedef enum VkPrimitiveTopology
{
VK_PRIMITIVE_TOPOLOGY_POINT_LIST
VK_PRIMITIVE_TOPOLOGY_LINE_LIST
VK_PRIMITIVE_TOPOLOGY_LINE_STRIP
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY
VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
} VkPrimitiveTopology;
观察下对于VkPrimitiveTopology的类型定义,不难看出,其实和OpenGL类似,出入并不是很大。
顶点描述模块
还记得上一期最后放出来的Vulkan渲染管线Pipeline吗?不记得的话,我们再看一遍。
在每条Pipeline,需要确定本条管线接收怎样的模型顶点数据。我们以绘制一个正方体为例:
首先我们对正方体顶点进行从0-7编号,参考如下代码:
我们剖析下Sample里这段代码,对于vertex #0,第一行的{ -1., -1., -1. },是v0的position,也就是x坐标是-1,y坐标是-1,z坐标是-1。第二行的{ 0., 0., -1. },是表面normal向量,表明了指向正方体的背面。第三行的{ 0., 0., 0. },是颜色,表示颜色是黑色的。最后一行的{ 1., 0. },代表的则是纹理坐标,即S-T坐标,S等于1,T等于0。依次可以类推vertex #2和vertex#3,并且v0、v2、v3一起组成了三角形0-2-3,也就是组成正方体6个面的12个三角形之一,只需要告诉系统运用三角形的图型拓扑即可。这些数据会以流的形式按顺序进行排列,并告诉着色器shader,那么如何让shader也能知道我们在这里定义的vertex结构体里position、normal、color、texCoord的顺序的呢?这个后续会讲述,这里我们只需要知道顶点流的一个流程即可。
GPU装载
因为调用的是三角形的图元拓扑,所以Vulkan每次抓取单位是3。这就是绘制的过程,这些结构体数组的数据流会被送入Vulkan,如果我们把它们都装入CPU内存,
就会造成极大的浪费,所以我们装入GPU内存,那我们如何实现呢?
参考下面的方法:
绘制
以上这个过程就是创建databuffer的过程。这里我们要确保我们在shader中数据格式完全匹配我们在CPU里期初定义的:
调用下面代码进行顶点绑定,以及告诉Command Buffer绘制哪些顶点进行绘制:
到这儿我们就绘制出一个带有不同颜色顶点的立方体:
加上纹理映射后的效果:
其实这一期关于Vulkan绘制的内容,大多是对之前放出的Sample工程的详细讲解,从顶义,到创建GPU内存,到绘制等步骤,这些确实是非常枯燥,但是对于想学习Vulkan后续教程是必不可缺的一部分。
欢迎大家关注虹图AI开放平台公众号,后台留言交流,也欢迎大家移步至我们刚上线的开发者社区中交流和分享。
关于Vulkan以及shader相关的实践内容,我们会在本系列后续内容中继续与大家分享。(虹图人像人体中美颜SDK部分是基于Vulkan进行开发封装的,性能极致,对开发者更加友好,十行之内完成一个简单的demo,点击【阅读原文】可查看详情。)
敬请期待~
世界微头条丨Hello Vulkan(二)| 图形渲染新技术Vulkan Drawing
支持太阳能光伏业务 与光伏企业共度难关
现场直击!湖南各地纪检监察机关纷纷出动 严查节前“四风”问题
环球信息:赫美集团:子公司惠州浩宁达科技有限公司主营研发生产电工仪器仪表等
大众/华友合作退役电池梯次市场应用|观点
当前动态:2023春节期间曲阜三孔还需要预约吗?
德美化工:连续3日融资净偿还累计493.63万元(01-13):实时焦点
NBA历史地位前十巨星:詹姆斯真能排第二吗?库里配得上前十吗?
大一到大四能有多离谱,学生晒颜值变化判若两人,连亲妈也认不出
【环球速看料】世界第一座价值12亿的大佛“凉了”?游客:拜不起
【手慢无】真香!读速4800MB/s的2TB M.2固态硬盘低至673元包邮
热议:干货 | AI算法透明性实现与评估
韩国梨泰院踩踏事故调查结束:23名公务员被移交检方 6人被捕
今日白银最新报价(2023年1月13日)-环球热头条
全球即时看!天坛生物:1月12日融券卖出金额183.98万元,占当日流出金额的1.91%
中国集邮回应兔年邮票脱销:正紧急调拨
微软已停止支持Windows 8.1/7,同时2025年也将停止支持Windows 10 全球播资讯
深圳市第七高级中学招聘宣传专员1名:环球观热点
会宁乡村产业绘出幸福好光景
信用卡逾期了是不是可以协商
供应商货源差哪了,为何别人爆单你陪跑?
罗曼股份(605289.SH):主营不涉及新能源汽车业务
卡卡贷贷款逾期19年拖欠多久上征信系统:环球今亮点
又一个雨季的唯美句子(精选199句)-环球即时
安恒信息:公司拟回购不超过66.67万股公司股份:看点
强化服务 确保农户卖“明白粮 舒心粮”
环球速讯:2022年农村宅基地回收补偿吗
还呗逾期还款后会不会上征信
私人借款两分利怎样写借条?
小区要求返乡报备是否“阳过”?“可能违法”
【全球时快讯】2022年楼市回顾:成交规模缩回7年前 百城新房价格7年来首跌
【环球时快讯】绿电概念股早盘逆市走高,截至发稿,大唐新能源(01798.HK)涨6.18%,报2.75港元
今日热文:满易贷贷款逾期8年还不起会上征信系统吗
深圳外国语小学:爸爸妈妈进课堂,讲述社会大百科
天天头条:河南新冠病毒感染率近九成 专家谈重症高峰将持续多久
世界最资讯丨谁会用抖音桌面端聊天软件?
相关新闻