如何使用VBO进行变形
how to use VBO for morphing?
我想要一个可以动画的网格。我正在从文件中加载网格,包括关键帧。我想把所有的帧放入VBO中,并在GPU的顶点着色器中组合其中的两个帧。所以我想把帧传递给GPU和一些统一的,将允许创建一个结果帧从这两个
有可能吗?如果有,我该怎么做?
你会有更多的顶点属性。通常,您可以使用:
in vec3 position;
in vec3 normal;
in vec4 color;
in vec2 texCoord;
对于变形目标,您需要:
in vec3 position0;
in vec3 position1;
in vec3 normal0;
in vec3 normal1;
in vec4 color;
in vec2 texCoord;
实际的模型空间位置将是position0
和position1
之间的线性插值。正常情况下也一样(我猜)。一旦你得到了它们,你就把它们通过常规的变换。颜色和纹理坐标大概不会改变,但如果它们改变了,那么它们也需要有0
和1
版本。
实际的渲染非常简单。假设,您将在同一缓冲区中拥有变形目标的所有位置。所以这是将position0
的属性绑定到第一个变形目标,并将position1
的属性绑定到第二个变形目标的问题。法线也是一样。然后按正常方式渲染
相关文章:
- OpenGL VBO Indexing ( How to compute Index Array)
- QT QOpenGLWidget:如何在不使用数据块复制的情况下修改VBO中的单个顶点值?
- 将单个未唱的 int 发送到 VBO
- VBO必须在VAO之后绑定
- 如何在顶点着色器中使用VBO数据作为位置数据,在片段着色器中使用统一数据作为颜色数据
- OpenGL:第二个VBO破坏了第一个VBO
- 如何告诉 VBO 处理给定的数据?(布料模拟)
- 我们是否需要序列化 VAO 和 VBO
- OpenGL VAO VBO resize
- glVertexAttribDivisor 存储在哪里 - VAO、VBO 或全局状态?
- 将 OpenGL VBO 与自定义类/数据结构一起使用
- Qtopengl,为什么不能用不同的vbo画两个立方体
- OpenGL C++:VBO 的结构包装器不会初始化成员
- 为什么VAO可以使用VBO数据绑定它?
- 可以在同一 VBO 中存储不同的顶点属性和索引
- 两个不同的对象 OpenGL.VAO VBO IBO 网格失真问题
- c++ cuda opengl not rendering vbo
- 在 OpenGL 中,在保持良好帧速率的同时,VBO 中有多少个顶点的好目标是什么
- OpenGL 在与呈现线程不同的线程中创建和加载 VBO 信息
- 如何使用VBO进行变形