openGL之API学习(五十九)Transform Feedback变换反馈

本文介绍了OpenGL中的Transform Feedback功能,允许在顶点处理后捕获数据,避免数据在GPU和主内存之间的传输。通过创建Transform Feedback对象,绑定缓存,并配置记录变量,可以在顶点着色器或几何着色器后捕获更新的顶点位置,适用于粒子模拟等场景。文章详细讲解了Transform Feedback对象的创建、缓存绑定、变量配置、启动和停止流程。
摘要由CSDN通过智能技术生成

OpenGL ES 3.0、openGL 4.x新增的功能

我们总是将顶点数据发送到图形处理器,并且只在帧缓存中生成绘制的像素。如果我们想要在经过顶点着色器或几何着色器之后捕获这些顶点呢?在这一章中,我们将探讨一种方法,即transform feedback。TransformFeedback是OpenGL管线中,顶点处理(如果有几何着色器,那么就在几何着色器后)之后,图元装配之前的一个步骤。

我们已经使用了VBO(顶点缓冲区对象)来存储用于绘制操作的顶点。Transform feedback 允许着色器把顶点写回这些。

例如,您可以构建一个顶点着色器,它模拟重力并将更新后的顶点位置写回缓冲区。这样,您就不必将这些数据从图形内存传输到主内存。最重要的是,你可以从如今GPU的巨大的并行处理能力中获益。

这个特性可以用来简化像粒子模拟这样的效果

让我们从一个简单的顶点着色器开始。

const GLchar* vertexShaderSrc = R"glsl(

in float inValue;

out float outValue;


void main()

{

outValue = sqrt(inValue);

}

)glsl";

 

这个顶点着色器似乎没有多大意义。它没有设置一个gl_position,它只接受一个任意的浮点数作为输入。幸运的是,我们可以使用Transform feedback来捕获结果,我们马上就会看到。

GLuint shader = glCreateShader(GL_VERTEX_SHADER);

glShaderSource(shader, 1, &vertexShader
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值