我知道十六进制数字,但我似乎无法了解如何使用它来创建位图图像或字体。我从链接 http://www.glprogramming.com/red/chapter08.html 进行了研究,该链接显示了如何创建F.十六进制数字对应的是什么?例如,位图图像的哪一部分做0xff,0xc0覆盖?我以为他们提供了有关像素颜色的信息。
答案 0 :(得分:1)
0xff 1111 1111 且 0xc0 1100 0000 。
将它们放在一起并且您有 1111 1111 1100 0000 ,如果您对位图中的每一行重复此过程,则会得到以下内容:
GLubyte rasters[24] = {
0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00,
0xff, 0x00, 0xff, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00,
0xff, 0xc0, 0xff, 0xc0
};
// Keep in mind, the origin of your image is the **bottom-left**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0xff,0xc0 1111111111000000 1111111111
0xff,0xc0 1111111111000000 1111111111
0xc0,0x00 1100000000000000 11
0xc0,0x00 1100000000000000 11
0xc0,0x00 1100000000000000 11
0xff,0x00 1111111100000000 11111111 // The 0s make it hard to read, so I ...
0xff,0x00 1111111100000000 11111111 // removed them on the right-hand side.
0xc0,0x00 1100000000000000 11
0xc0,0x00 1100000000000000 11
0xc0,0x00 1100000000000000 11
0xc0,0x00 1100000000000000 11
0xc0,0x00 1100000000000000 11
这应该看起来很熟悉;)
关于这一切如何转化为实际颜色。 OpenGL将使用 当前 栅格颜色替换位图中 1 的任何部分(例如glColor3f (0.0f, 1.0f, 0.0f)
将生成绿色 F )。当您致电glBitmap (...)
时, 0 位将被丢弃。
答案 1 :(得分:1)
一个十六进制数字表示四位信息:它可以具有从零(二进制0000)到十五(二进制1111)的值。因此,四个十六进制数字代表16位信息。
字母的每一行" F"该页面上的位图宽度为16个像素,因此它可以用16位数字表示,其位数表示相应的像素应该是黑色还是白色。十六进制数字只是一种编写其位定义图像的数字的方法。
请注意,这是一个黑白位图:每个像素仅由一个位描述,因此它只能是黑色或白色。如果你想要灰度(例如用于抗锯齿),你需要为每个像素提供多位信息;通常为每像素8位(一个字节),256种可能的阴影。
灰度和彩色图像更容易思考,因为每个像素由一个或多个整个字节表示,因此给定字节中的所有位对应于相同的像素,并且您不需要考虑个别比特。但在黑白图像中,单个字节可以描述多个像素,因此您必须考虑字节中的各个位。