GL_TEXTURE_SWIZZLE_R GL_TEXTURE_SWIZZLE_G等详解

如果您的源纹理具有1个颜色通道,则可以使用格式GL_RED和基本内部格式GL_RED:

1
2

glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, image_width, image_height,
             0, GL_RED, GL_UNSIGNED_BYTE, image_data);

设置纹理参数GL_TEXTURE_SWIZZLE_G和GL_TEXTURE_SWIZZLE_B(请参见glTexParameteri)以也从红色通道读取绿色和蓝色:

1
2

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, GL_RED);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED);

注意,将图像加载到纹理对象时,GL_UNPACK_ALIGNMENT可能必须设置为1:

1
2

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, ...);

就是各个通道指定读取源数据的通道

默认情况下,该参数为4。这意味着假定图像的每一行对齐的大小都是4的倍数。如果图像数据紧紧包装,则必须更改对齐方式。

glPixelStorei(GL_UNPACK_ALIGNMENT, 4);

如果使用着色器程序,则可以通过Swizzling来实现。 例如。:

1

vec3 color = texture(u_texture, uv).rrr;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙行天下01

你的鼓励将是我的最大写作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值