转换BMP 16位 到 Open GL ES RGB5551
来源:互联网 发布:费洛伊德算法 编辑:程序博客网 时间:2024/05/01 08:12
1. 使用ACDSEE 转换24位到16位,分析bmp左下角第一个像素点。
24bit BGR (0xFF, 0xCC, 0x99)
16bit RGB555 (0x5F, 0x4F)
转2进制
0101 1111 0100 1111
注意啦,要进行高低位翻转。
0100 1111 0101 1111
2. RGB555 对应的值应该是
B16 = 31 * 255 / 255 = 31
G16 = 31 * 204 / 255 = 24
R16 = 31 * 153 / 255 = 18
3. bmp 5551 16位的对应
显然 B 对应11111,于是有bmp
0100111010111111xR(19)G(26)B(19)
GL的对应应该相反:
1001110101111110R(19)G(26)B(19)x
可见BMP中16bit的排序是ARGB, 而OpenGL ES中16bit的排序是 RGBA.
转换方式:向左移一位就行了。见转换方案2
4. 转换方案1
struct ABGR16_555 // bmp argb
{
WORD b: 5 ;
WORD g: 5 ;
WORD r: 5 ;
WORD x: 1 ;
};
struct RGBA16_555 // gl rgba
{
WORD x: 1 ;
WORD b: 5 ;
WORD g: 5 ;
WORD r: 5 ;
};
ABGR16_555* pARGB = (ABGR16_555*)pSrc;
RGBA16_555* pRGBA = (RGBA16_555*)pDst;
pRGBA->r = pARGB->r;
pRGBA->g = pARGB->g;
pRGBA->b = pARGB->b;
pRGBA->x = 1; // 不透明
5. 转换方案2
WORD w = MAKEWORD(pSrc[0], pSrc[1]);
w <<= 1;
w |= 1; // 不透明pDst[0] = LOBYTE(w);
pDst[1] = HIBYTE(w);
6. OpenGL ES中使用 RGB5551
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, pTexture->iWidth, pTexture->iHeight, 0, GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, pTexture->pImage);
- 转换BMP 16位 到 Open GL ES RGB5551
- Open GL ES 学习
- Open GL Es
- Open GL ES 三角形绘制
- open gl es some key concept
- 使用OPEN GL ES显示图形 -目录
- Open GL es 学习(一)
- Android Open GL ES - 绘制三角形
- 【OPEN GL】学习笔记之一:顶点坐标到屏幕坐标之间的转换
- Open GL V.S. OpenGL ES for triangles
- 【代码】Android 开发 Open GL ES 绘制 3D 图形
- open GL
- Open GL
- 将32位BMP文件转换为24位BMP
- VC 实现BMP转换到JPG、JPG转换到BMP
- bmp 到IplImage的转换
- 学习Android平台的Open GL ES, 首先要搞清楚GLSurfaceView
- Open GL es 2.0 简单加载Obj格式的模型文件
- Jquery使用stopPropagation需要注意的问题
- 运维总结
- MFC异常与C++标准异常
- 模拟电子技术15 25------——放大电路 动态分析 交流负载
- libxml 关关键字解析xml文件的例子
- 转换BMP 16位 到 Open GL ES RGB5551
- css的sytle解析
- 多做一点就能解决问题
- 如何将 Access 数据库转换到 SQL Server
- 通过AIDL及反射机制,使用隐藏API挂断电话
- 利用底层键盘钩子拦载任意按键(回调版)
- java写入Excel并读取文件
- 有点不知所措
- Web前端开发必备手册下载