游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2970|回复: 2

请问glBitmap最后一个参数提供的数据是什么类型的图像?

[复制链接]

3

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2011-7-14 19:03:00 | 显示全部楼层 |阅读模式
void glBitmap(GLsizei width,   GLsizei height,   GLfloat xorig,   GLfloat yorig,   GLfloat xmove,   GLfloat ymove,   const GLubyte *bitmap)
Bitmap是位图的意思,位图的编码是BGR,可是很明显最后一个参数传的不是GL_BGR_EXT类型的图像。


我遇到的实际问题是这样子的。看到一个帖子,OPENGL显示中文。先用GetGlyphOutline获得位图数据,然后用glBitmap显示。但是,我想不用glBitmap直接显示,改创建为纹理,用纹理渲染。
显示一个字符“a”的例子,glBitmap(7,7,0,0,0,0,某指针)
然后某指针指向了一个28个字节的数据:{118,0,0,0,140,0,0,0,132,0,0,0,68,0,0,0,60,0,0,0,132,0,0,0,120,0,0,0}
显示成功。
而且,很奇怪的是。width和height为7,最后一个参数的数据长度却是28。7*7=49,那么说明28*8/49=4.571428571428571,每个像素占4.571428571428571个bit?这是什么奇怪的数据?

我把这个数据。试了各种方法尝试创建为纹理。无效。
GL_ALPHA也试过了。GL_BGR_EXT也试过了。GL_RGBA也试过了。
显然不对的。这个数据。

请问glBitmap最后一个参数提供的数据是什么类型的图像?
如何把GetGlyphOutline获得位图数据生成纹理呢?

3

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
 楼主| 发表于 2011-7-14 23:16:00 | 显示全部楼层

Re: 请问glBitmap最后一个参数提供的数据是什么类型的图像?


一个字符“a”,我用GetGlyphOutline获得的点阵数据是{0,1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
我数了一下,这一串里面一共有22个“1”,然后字符“a”放大后刚好也有22个像素是可视的。也就是说,想要载入到纹理,找到1对应的位置,描点就可以了。

不过。找不到规律啊。
第一个字节的bit值是0,1,1,1,0,1,1,0。按我的理解就是。空一个点,描3个点,再空一个点,再描两个点,再空一个点。可是看字符“a”的图像。根本不是这么排列的。

3

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
 楼主| 发表于 2011-7-14 23:31:00 | 显示全部楼层

Re:请问glBitmap最后一个参数提供的数据是什么类型的图像?

哦。我知道了。位图是上下倒置的,把那一串数据倒过来看。很容易发现1,1,1,1对应第一行四个像素。接着1,0,0,0,0,1,对应第二行。
嗯,知道解析这个就很容易创建纹理了。

我先把这一串数据进行分析,转成GL_ALPHA再生成纹理。

已经解决。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 12:10

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表