数据组织
本篇的主要内容为VulkanSceneGraph中的数据组织方式,与Vulkan和OpenGL相同,主要有以下两种方式
- 每个种类的数据放在一起,即把每个点的坐标数据放在一起,颜色放在一起。这种方式是vsgExamples以及VSG源码中常见的使用方式,我就不再赘述,如果有需要的话,也可以留言给我,我有空的时候再做一个简单的示例。官方示例
- 每个顶点的数据放在一起,即把点的坐标、颜色等信息按照自定义的顺序排列,随后放到一起。这种方式与learnOpenGL中的方式是相近的。官方教程中这个部分为TODO状态,接下来的内容为该种方式的示例.
完整代码这里
具体实现
主要为三个方面,着色器、数据描述、数据组织存储。这三个方面需要能够相互统一起来。
如果自己要使用vsg自带的几种shader,那自己的数据就要组织成对应的形式。
shader
这里使用最简单的shader
std::string vertexShaderSource{
R"(
#version 450
layout(location = 0) in vec3 vsg_Vertex;
layout(location = 1) in vec3 vsg_Color;
layout(location = 0) out vec4 fragColor;
void main()
{
fragColor = vec4(vsg_Color, 1.0f);
gl_Position = vec4(vsg_Vertex, 1.0f);
})"
};
std::string fragmentShaderSource{
VulkanSceneGraph中的数据组织与性能优化

本文介绍了VulkanSceneGraph中数据组织的两种方式,包括按类型分组和官方推荐的连续内存布局,以及如何配合shader、数据描述和存储来提高性能。还提到了NDC坐标系的特点。
最低0.47元/天 解锁文章
1034





