我知道十六进制数字,但我似乎不知道如何使用它来创建位图图像或字体。我从链接 http://www.glprogramming.com/red/chapter08.html学习 显示了如何创建 F。十六进制数字对应什么?例如,0xff,0xc0 覆盖了位图图像的哪一部分?我认为他们提供了有关像素颜色的信息。
最佳答案
十六进制数字有些误导,因为位图是……位。
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 位将被简单地丢弃。
关于opengl - 在 opengl 中写入位图数据以创建字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24254854/