opengl - 在 opengl 中写入位图数据以创建字体

标签 opengl bitmapdata

我知道十六进制数字,但我似乎不知道如何使用它来创建位图图像或字体。我从链接 http://www.glprogramming.com/red/chapter08.html学习 显示了如何创建 F。十六进制数字对应什么?例如,0xff,0xc0 覆盖了位图图像的哪一部分?我认为他们提供了有关像素颜色的信息。

最佳答案

十六进制数字有些误导,因为位图是……位。

0xff1111 11110xc01100 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/

相关文章:

c++ - 在 OpenGl 和 OpenFrameworks 中使 3d 模型透明

opengl - 如何在OpenGL中旋转2D正方形?

c++ - 如何在opengl中停止拉伸(stretch)

c++ - 在 C++ 中使用 BitmapData 的 AccessVioilationException

actionscript-3 - AS3 - 缩放位图数据

actionscript-3 - AS3 - 刷新位图的最有效方法

c++ - OpenGL 绘图纹理

opengl - 在调用 glDeleteBuffers 之前是否应该解除 VBO 绑定(bind)?

actionscript-3 - AS3 bitmapdata.draw 无需添加到显示列表/舞台

actionscript-3 - AS3 : ByteArray and BitmapData