GPGPU计算观念和基本思路总结

GPGPU计算中,数据存储于纹理中,通过创建FBO、Shader进行计算。首先,数据从内存传输至纹理,接着使用Shader执行计算(如数组相加),渲染结果保存在绑定的输出纹理,最后通过glReadPixels获取计算结果。整个过程包括环境初始化、FBO创建、数据传输、Shader操作和结果读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    使用GPU进行通用计算和常规的使用CPU进行计算在观念上具有非常大的区别,很多资料都会进行对比(比如经典的《GPU Gem 2》),但是通常用语都比较专业化,初学者可能很难想明白。这里按照我目前的理解,先总结一下:

 

    首先需要明确的是,GPGPU中所有计算的数据,都保存在纹理中。比如一个长度为16的一维数组,在GPGPU中就需要建立一个2*2的纹理,这样这张纹理就有4个像素,而每个像素包含R、G、B、A四个颜色分量,所以总共是16个数据。

    具体的数据操作,则需要一个由内存(这里指的是计算机内存)向显存(这里指显卡内存)传输的过程——每一组数据都需要在内存中创建,然后将数据传送到一个纹理中,这些数据在纹理中的表示,则是纹理中每一个像素的颜色值(这个颜色值可以是一个分量,也可以是多个分量,看具体的设计)。

 

    另外一个需要明确的是,由于我们做GPGPU时不是真正的在渲染画面,因此不需要将渲染结果以图像方式输出,而仅仅需要取出渲染的结果(也就是像素颜色值。如前面所说,可以将它们看成是传统的数组),因此我们不需要渲染到传统的帧缓冲区中,所以,我们要创建一个“后台的帧缓冲区”,就是FBO——Frame Buffer Object。FBO的概念在GPGPU中非常重要!

    在将FBO创建好,并设定好我们之后的渲染指向这个FBO后,还需要明确一个观念

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值