Opengl 利用FBO实现物体移动轨迹变淡的效果

本文介绍了如何在OpenGL环境下,结合C++和FBO技术,实现一个点在圆形路径上移动并留下逐渐淡化消失轨迹的视觉效果。通过在每帧中利用FBO将图形渲染到纹理,然后将纹理透明地绘制到屏幕,使得旧位置的图形被黑色背景覆盖而淡化。代码示例展示了计算圆点位置和绘制过程。
摘要由CSDN通过智能技术生成

本文代码在Windows下编写,用到了GLUT和GLEW库。

实现了一个点沿圆周运动,移动轨迹逐渐变淡消失的效果。

基本思路是在每帧刷新时,利用FBO先将图形渲染到一张贴图(纹理),然后再将纹理渲染到屏幕上。其中将图形渲染到贴图时,利用混合绘制透明的黑色背景,再绘制移动的圆点,这样每帧更新时会有新的黑背景叠加,之前位置的圆点会被逐渐覆盖并慢慢消失。

然后上代码

我将圆点在一个圆心在(0,0),半径为1的圆周上运动,计算圆点位置的代码如下(将圆周平分为CIRCLE_POINT_NUM个点)

void CalculatePoints()
{
    circlepoints.clear();
    float angle = 360.0f/CIRCLE_POINTS_NUM;
    for (int i=0; i<CIRCLE_POINTS_NUM; i++)
    {
        XY xy;
        xy.x = cos(angle*i*Pi/180);
        xy.y = sin(angle*i*Pi/180);
        circlepoints.push_back(xy);
    }
}
创建FBO的代码

bool CreateFBO()
{
	glGenTextures(1, &textureID);
	glBindTexture(GL_TEXTURE_2D, textureID);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值