如何在 C++ 中将位图绘制为 OpenGL 纹理?
我有一个位图及其句柄(Win32 HBITMAP)。关于如何在 OpenGL 四边形上绘制此位图(缩放并拉动位图的 4 个角以适合四边形的 4 个顶点)有什么建议吗?
I have a bitmap, and its handle (Win32 HBITMAP). Any suggestion of how to draw this bitmap on an OpenGL quad (with scaling and pulling the 4 corners of the bitmap to fit the 4 vertexes of the quad)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要检索 HBITMAP 中包含的数据,请参阅 http://msdn.microsoft.com/en-us/library/dd144879(v=vs.85).aspx 然后您可以使用以下命令将 DIB 数据上传到 OpenGL glTexImage2D 或 glTexSubImage2D
创建纹理后,您可以像往常一样应用它(启用纹理,为四边形的每个角指定一个纹理坐标)。
由于评论而编辑
这段(未经测试!)代码应该可以解决问题
You need to retrieve the data contained in the HBITMAP, see http://msdn.microsoft.com/en-us/library/dd144879(v=vs.85).aspx Then you can upload the DIB data to OpenGL using glTexImage2D or glTexSubImage2D
With a texture being created you can apply this like usual (enable texturing, give each corner of the quad a texture coordinate).
EDIT due to comment
This (untested!) code should do the trick