首页 文章

使用OpenGL插入数据缓冲区?

提问于
浏览
0

我正在编写一个应用程序,将两个网格的顶点(用作关键帧)加载到两个单独的OpenGL浮点数据缓冲区中 . 两个网格具有相同数量的顶点 .

我想通过在这两个缓冲区之间使用线性插值来计算中间帧(我可以将插值加权指定为0到1之间的值) . 我目前正在CPU上执行插值,但我想将计算卸载到GPU以便更快地计算中间帧 .

有没有办法只使用OpenGL(即不是OpenCL)?如果是这样,怎么样?

1 回答

  • 5

    假设顶点在两个缓冲区中以相同的顺序存储,您可以简单地将每个缓冲区绑定到顶点着色器中的属性 . 结合统一控制插值(让我们称之为t)从0(仅第一个缓冲区)到1(仅第二个缓冲区),您可以在写入 gl_Position 之前执行线性插值 . 着色器可能看起来像下面这样:

    in vec4 buffer1; //Bind buffer1 to this attribute
    in vec4 buffer2; //Bind buffer2 to this attribute
    
    uniform float t; //Interpolation parameter between 0 and 1
    
    void main()
    {
        gl_Position = (1 - t) * buffer1 + t * buffer2;
    }
    

相关问题