昨天学习blender的主要目的之一就是激发我的创作灵感。我到底要用vulkan做什么作品。通过blender入门我知道最简单的就是画多个图形,我之前已经画过一个三角/正方形,现在要在一个界面显示一个三角加一个方块,应该怎么修改代码?
最简单的优先想到的是在vertex和index buffer中提前定义,通过这个思路来解决此问题,尝试效果ok。
但是这是一个很死板的方法,需要提前定义,我想做的是在运行过程中突然添加一个三角,应该在哪里修改代码呢?我觉得应该是在drawFrame函数里修改。但是基于当前的代码架构,应该如何修改还不清楚。我需要找一个比较好的代码框架,还是继续去看官网教程找线索最靠谱。
重温理论
要开阔思路,就要多学习相关内容,才能触类旁通,知道什么是重点。找了个之前搜集的资料,又让我对CPU和GPU的同步及shader是什么的问题理解的更深入了。有图有真相
CPU和GPU的同步效能,尽量减少命令数量。
shader是什么
GPU主要就是用来渲染的。软件shader编程就是可以自行控制GPU渲染的设置,这样就可以出现不同的渲染结果了。
修改代码
const std::vector<Vertex> vertices = {
{ { -0.5f, -0.5f },{ 1.0f, 0.0f, 0.0f } },
{ { 0.5f, -0.5f },{ 0.0f, 1.0f, 0.0f } },
{ { 0.5f, 0.5f },{ 0.1f, 0.5f, 0.7f } },
{ { -0.5f, 0.5f },{ 1.0f, 1.0f, 1.0f } },
//new as below
{ { -0.0f, -0.5f },{ 1.0f, 0.0f, 0.0f } },
{ { -0.5f, -1.0f },{ 1.0f, 0.0f, 0.0f } },
{ { 0.5f, -1.0f },{ 1.0f, 0.0f, 0.0f } },
};
const std::vector<uint16_t> indices = {
0, 1, 2, 2, 3, 0,
4,5,6 //new
};