glBitmap:位图大小问题
glBitmap: bitmap size issue
我对理解和使用 glBitmap 函数有疑问。
我从 this example and trying to draw a 40x40 "bitmap" and avoiding a 开始 我试过这个:
40 x 40 is 1600 bits -> so I need 200 bytes of info (1600/8)
GLubyte rasters[ 200 ] =
{
0xff, 0xff, //.. and so on 200 times
};
// main code calling the function below
void display(x, y)
{
float size = 40.0;
glColor3f( 0.0, 1.0, 0.0 );
glRasterPos2i(x, y );
glBitmap(size, size, 0.0, 0.0, 0.0, 0.0, rasters );
}
我应该画一个 40 x 40 像素的全绿色正方形。结果我遇到了 而不是正方形的脏上部。似乎 raster[200]
足以绘制 32 x 32 位图。那么我想问一下:
- 我的数学(或理解示例)有什么问题?
- 我需要在我的光栅中绘制一个 40x40(以及为什么,下一步我需要绘制一些与这些位一起玩的东西,那么现在如何定位像素(x,y))
- 最终目标是从 GLubyte 数组开始绘制一些东西,有没有办法用 glTexImage2D 做同样的事情? (我尝试关注 this suggestion 但我失败了)
您没有设置对齐方式。默认情况下,OpenGL 假定光栅的每一行的开始对齐到 4 个字节。这是因为 GL_UNPACK_ALIGNMENT
参数默认为 4。栅格中的每一行都有 5 个字节 (40 / 8 = 5)。因此,您需要将对齐方式更改为 1:
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glBitmap(size, size, 0.0, 0.0, 0.0, 0.0, rasters);
我对理解和使用 glBitmap 函数有疑问。
我从 this example and trying to draw a 40x40 "bitmap" and avoiding a
40 x 40 is 1600 bits -> so I need 200 bytes of info (1600/8)
GLubyte rasters[ 200 ] =
{
0xff, 0xff, //.. and so on 200 times
};
// main code calling the function below
void display(x, y)
{
float size = 40.0;
glColor3f( 0.0, 1.0, 0.0 );
glRasterPos2i(x, y );
glBitmap(size, size, 0.0, 0.0, 0.0, 0.0, rasters );
}
我应该画一个 40 x 40 像素的全绿色正方形。结果我遇到了 raster[200]
足以绘制 32 x 32 位图。那么我想问一下:
- 我的数学(或理解示例)有什么问题?
- 我需要在我的光栅中绘制一个 40x40(以及为什么,下一步我需要绘制一些与这些位一起玩的东西,那么现在如何定位像素(x,y))
- 最终目标是从 GLubyte 数组开始绘制一些东西,有没有办法用 glTexImage2D 做同样的事情? (我尝试关注 this suggestion 但我失败了)
您没有设置对齐方式。默认情况下,OpenGL 假定光栅的每一行的开始对齐到 4 个字节。这是因为 GL_UNPACK_ALIGNMENT
参数默认为 4。栅格中的每一行都有 5 个字节 (40 / 8 = 5)。因此,您需要将对齐方式更改为 1:
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glBitmap(size, size, 0.0, 0.0, 0.0, 0.0, rasters);