Opengl glBitmap和glTexImage2D之间的差异

Opengl glBitmap和glTexImage2D之间的差异,opengl,Opengl,我需要在openGL窗口中显示图像。 图像会随着计时器的滴答声而改变。 我已经查看了google how,我可以看到它可以使用或glBitmap或glTexImage2D函数来完成。 它们之间有什么区别?区别是什么?这两个函数没有任何共同之处 是一个用于绘制二进制图像的函数。这不是一个.BMP文件或您加载的图像(通常)。该函数的名称没有引用口语术语“位图”。它指的是精确的:位的映射。位图中的每一位代表一个像素。如果位为1,则当前光栅颜色将写入帧缓冲区。如果位为0,则帧缓冲区中的像素不会改变 用于

我需要在openGL窗口中显示图像。
图像会随着计时器的滴答声而改变。
我已经查看了google how,我可以看到它可以使用或glBitmap或glTexImage2D函数来完成。

它们之间有什么区别?

区别是什么?这两个函数没有任何共同之处

是一个用于绘制二进制图像的函数。这不是一个.BMP文件或您加载的图像(通常)。该函数的名称没有引用口语术语“位图”。它指的是精确的:位的映射。位图中的每一位代表一个像素。如果位为1,则当前光栅颜色将写入帧缓冲区。如果位为0,则帧缓冲区中的像素不会改变


用于分配和可选地分配给它们。稍后可以绘制将该纹理映射到的三角形。但是glTexImage2D本身并不绘制任何东西。

您可能正在寻找的是,它直接将图像绘制到帧缓冲区中。如果使用
glTexImage2D
,则必须首先使用新图像更新纹理,然后使用该纹理绘制一个形状(例如,全屏四边形)以实际渲染图像

也就是说,如果

  • 您正在使用像JOGL这样的库,它使从图像绑定纹理成为一种简单的操作,或者
  • 要缩放图像或以透视方式显示图像

或者如果您喜欢性能
glDrawPixels
非常慢。此外,如果您想对这些像素进行任何形式的操作(着色、旋转等等)。基本上。。。切勿使用
glDrawPixels
。有一个原因ARB用GL 3.1把它扔掉了。很好。我考虑添加一个注释,大意是“既然纹理可以做你想做的一切,为什么要为此学习一个晦涩的专用API?”(但是,我确实认为,由于图像每帧都在变化,使用
glDrawPixels
绘制图像并不比每帧将其复制到纹理慢)