如何在 OpenGL 中显示图像

Posted

技术标签:

【中文标题】如何在 OpenGL 中显示图像【英文标题】:How do you display images in OpenGL 【发布时间】:2011-08-10 05:16:46 【问题描述】:

如何使用 OpenGL 渲染图像(.bmp 和 .jpeg)? 我遇到过一些教程,但它们是针对 C# 而不是 C/C++。 我想渲染图像的原因是因为我想画一艘宇宙飞船(用于游戏)。我可以使用 OpenGL 原语,但它看起来并不那么好。另一种选择是使用坐标来绘制宇宙飞船,但这需要很长时间,而且看起来不会那么好。

运行以下 sn -p 总是返回失败:

#include <iostream>
#include <GL/glfw.h>
using namespace std;
int main()

  GLFWimage image;
  if(glfwReadImage("ship.tga", &image, GLFW_ORIGIN_UL_BIT)!=GL_TRUE);
  cout << "FAILED";
  system("PAUSE");
  return 0;

我做错了什么? 写得不好的代码。对于那个很抱歉。现在工作

【问题讨论】:

寻找 NeHe 教程,他们用数十种语言的代码解释所有基础知识,包括 C++。 “ship.tga”文件与.exe在同一目录下 【参考方案1】:

通过纹理一个四边形(或者更好的是,两个三角形)。

除非您真的需要.bmp.jpeg,否则我建议您使用.tga (Targa) 图像,因为它们更常用并且支持alpha 通道。

一些 C++ 资源:

http://nehe.gamedev.net/tutorial/loading_compressed_and_uncompressed_tgas/22001/

http://nehe.gamedev.net/tutorial/texture_mapping/12038/

http://www.lonesock.net/soil.html(一个很棒的 OpenGL 小图片库。支持 bmp、jpg、png、tga 等)

【讨论】:

我并不“真正需要”它们。我建议这些的原因是因为它很容易获得/创建它们。如何创建.tga 文件? 没关系。我在网上找到了一个网站,可以将图片转换为.tgaonline-utility.org/image_converter.jsp @viraj 我忘了在我的帖子中提到这一点。在处理 .tga 文件时,我更喜欢使用 Paint.net。它保存压缩和未压缩的 24/32 位。 我的天啊,现在是 2020 年,我仍然不得不经历这个“你错过了一个图书馆”,然后是另一个图书馆,然后是另一个图书馆,然后是另一个图书馆,然后是另一个图书馆。哦,好吧,也许明年。【参考方案2】:

渲染一个带纹理的四边形或两个形成矩形的三角形。

【讨论】:

【参考方案3】:

类似地震的游戏将人类渲染为侧面具有不同纹理的立方体。你也可以这样做。启用 Alpha 混合并确保透明纹理数据真正透明。

【讨论】:

以上是关于如何在 OpenGL 中显示图像的主要内容,如果未能解决你的问题,请参考以下文章

如何显示带有opengl纹理的灰度图像

(转)使用OpenGL显示图像绘制Shapes

(转)使用OpenGL显示图像定义Shapes

使用OpenGL显示图像?

在opengl中显示图像

为啥在 glfw 窗口上没有使用 opengl 显示位图图像?在 C++ 中读取位图图像文件时出现问题