gpt4 book ai didi

c++ - 使用 OpenGL 插入数据缓冲区?

转载 作者:太空宇宙 更新时间:2023-11-04 16:00:20 25 4
gpt4 key购买 nike

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

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

有没有办法只使用 OpenGL(即不使用 OpenCL)来做到这一点?如果是,怎么办?

最佳答案

假设顶点在两个缓冲区中的存储顺序相同,您可以简单地将每个缓冲区绑定(bind)到顶点着色器中的一个属性。结合控制从 0(仅第一个缓冲区)到 1(仅第二个缓冲区)的插值(让我们称之为 t)的统一,您可以在写入 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;
}

关于c++ - 使用 OpenGL 插入数据缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45916504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com