bak 10.在opengl 里面使用Color Key技术.

本文介绍了在OpenGL中如何实现类似普通图像引擎中的setColorKey功能。主要探讨两种情况:一是处理带有alpha通道的PNG等文件格式;二是针对不带alpha通道的BMP图片,通过添加alpha通道并启用alpha测试来过滤特定颜色。
摘要由CSDN通过智能技术生成

在opengl里面如何实现普通的图像引擎里面实现setcolorkey的方法.

有如下2中情况.

1.在ps里面处理好带alpha通道的图片.使用png 等可以带alpha 通道的文件格式.

2.如果图片不带alpha通道了,比如bmp 我要过滤掉黑色.那么可以给图像加入alpha通道.然后启用alpha test 过滤color key.

参考代码

 

/* 将当前纹理BGR格式转换为BGRA格式

* 纹理中像素的RGB值如果与指定rgb相差不超过absolute,则将Alpha设置为0.0,否则设置为1.0

*/
void texture_colorkey(GLubyte r, GLubyte g, GLubyte b, GLubyte absolute)
{

GLint width, height;

GLubyte* pixels = 0;

// 获得纹理的大小信息

glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width);

glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height);

// 分配空间并获得纹理像素

pixels = (GLubyte*)malloc(width*height*4);

if( pixels == 0 )

return;

glGetTexImage(GL_TEXTURE_2D, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, pixels);

// 修改像素中的Alpha值

// 其中pixels[i*4], pixels[i*4+1], pixels[i*4+2], pixels[i*4+3]

// 分别表示第i个像素的蓝、绿、红、Alpha四种分量,0表示最小&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值