将图像数据存储进纹理的几种方法

1.显示方式

static const GLubyte texdata1[] = {
 0xFF,0x00,
0xFF,0x00
};

static const GLfloat tex_color_data[] = {
1.0f,0.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,
1.0f,0.0f,0.0f,1.0f,};

glBindTexture(GL_TEXTURE_2D,texid0);
glTexStorage2D(0,GL_R8,2,2);
glTexSubImage2D(GL_TEXTURE_2D,
0,
0,0,
2,2,
GL_RED,GL_UNSIGNED_BYTE,texdata1
);

GL_RGBA32F


2.使用Pixel Unpack 缓存

glTexSubImage2D 中的参数的两种解释:

1.应用程序内存中存储数据的指针。

2.当做缓存对象的偏移。

glBindBuffer(GL_PIXEL_UNPACK_BUFFER,bufid);
glBufferData(GL_PIXEL_UNPACK_BUFFER,
sizeof(tex_color_data),tex_color_data,GL—STATIC_DRAW);

glBindTexture(GL_TEXTURE_2D,texid);
glTexStorage2D(GL_TEXTURE_2D,0,GL_R8,8,8);

glTexSubImage2D(GL_TEXTURE_2D,
0,
0,0,
2,2,
GL_RGBA,
GL_FLOAT,null);


优点:

没有立即将数据传送到纹理中,传输到纹理的过程是在GPU中进行的。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值