转载请声明出处:http://blog.csdn.net/xiaoge132/article/details/51448326

demo下载

导言:

通常在OpenGL里面绘制的都是默认的黑色背景,对于有些时候,太过于单调了,现在我们可以对它加上背景,实现一个不错的图形.

在网上看到人家要实现星空图,找到一张星空图片贴在背景上面.

看一下效果图

原理:

看一下下面的这张图:

这是OpenGL里面摄像机的原理图,我们要绘制的物体在离摄像机近的地方,那个离摄像机远的矩形,就是要绘制背景的地方.

先定义个导入图片的函数

LoadTexture(const char * filename, int width, int height)
{GLuint texture;unsigned char * data;FILE * file;//读文件file = fopen(filename, "rb");if (file == NULL) return 0;data = (unsigned char *)malloc(width * height * 3);fread(data, width * height * 3, 1, file);fclose(file);glGenTextures(1, &texture);glBindTexture(GL_TEXTURE_2D, texture);glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);//线性滤图glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);//生成纹理glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_BGR_EXT, GL_UNSIGNED_BYTE, data);free(data); //释放纹理return texture; }

在后面我们就可以调用这个函数来实现纹理的导入了.

接着再定义个设置背景的函数

Background()
{glBindTexture(GL_TEXTURE_2D, texture);glBegin(GL_QUADS);glTexCoord2d(0.0, 0.0); glVertex2d(-1.0, -1.0);glTexCoord2d(1.0, 0.0); glVertex2d(+1.0, -1.0);glTexCoord2d(1.0, 1.0); glVertex2d(+1.0, +1.0);glTexCoord2d(0.0, 1.0); glVertex2d(-1.0, +1.0);glEnd();return ;
}

最后在绘制函数里面调用并调整大小,就可以得到我们想要的背景了.

 glDisable(GL_DEPTH_TEST);glLoadIdentity();//导入纹理texture = LoadTexture("C:\\Users\\Administrator\\Desktop\\zuixin\\zuixin\\UI\\xiaoge.bmp", 640, 640); glEnable(GL_TEXTURE_2D);glPushMatrix();glScalef(100, 70, 1);glTranslatef(0, 0, -150);Background();                 //背景方块glPopMatrix();

俗话说的好,不给源码的博客不是好博客

demo下载

OpenGL中显示背景贴图相关推荐

  1. OpenGL全屏显示背景贴图

    在OpenGL中可以将图片设置为背景,具体操作如下: 1.切换为正交视角: 2.关闭深度测试: 3.将图片四个角的位置设置为正交窗口后裁剪面的四个角: 4.切换到透视视角: 5.开启深度测试: 6.显 ...

  2. WPF中显示GIF动态图

    开发工具与关键技术:Visual Studio 今天用WPF做一个登录页面,用到了GIF图,然后像引用图片的方式引用GIF图: 发现GIF跟图片没区别,只显示出来没有动态的GIF图,然后又陆续试了一些 ...

  3. 在tkinter中显示图片和图片名

    Python之解决tkinter.PhotoImage不显示图片的问题 Python3 最近做一个以图搜图的项目时,老师让做一个GUI的界面,因为之前学过tkinter所以信心满满的去做,结果搞了一下 ...

  4. obj文件在MeshLab中显示纹理贴图

    三个文件:obj文件.mtl文件及一张纹理图. 1.obj文件:` mtllib ./obj.mtl v -1 -1 -1 v -1 1 -1 v 1 1 -1 v 1 -1 -1 vt -1 -1 ...

  5. 在DataGrid中显示图片

    兼谈 DadaGrid 模板列的创建 DadaGrid 是 ASP.NET 编程中一个很重要的控件,其优良的可定制功能为提高它的表现力提供了极大的方便.除了与数据源直接绑定以外,我们还可以通过列绑定模 ...

  6. 微信动态中的背景图更换

    初衷: 图一中的红框中的部分,作为用户自定义的背景图,如果用户没有上传也会为其自动设置一张背景图,当用户点击时则会出现图二中的选项 ,点击取消则选项消失,点击从相册选择则会跳转本机的相册,选择照片后会 ...

  7. Jalview | 多序列比对图中显示序列标识

    上篇多序列比对软件Jalview的安装及使用体验介绍了Jalview可一站式完成:多序列比较.图形的美化及编辑:使用的比对方法.算法丰富:图形美观.颜色多样,被不少遗传领域SCI文章所使用. 本篇进一 ...

  8. CSS中添加背景图+盒子边框样式

    background-image背景图 *设置图片为背景.* background-image:url("图片路径"): background-size :设置背景图片的大小 属性 ...

  9. 怎么修改html模板里的背景,如何替换背景图模板中的背景

    原标题:如何替换背景图模板中的背景 图文排版 H5秀 小伙伴 小米,你们最近做的"假装一个标题"那个模板里的图咋替换啊,想换成自己的图,怎么点都换不了呢? 其实,这个模板中的图是作 ...

最新文章

  1. 斐波那契数列的低效与高效解法 【转】
  2. html-webpack-plugin 多页面,html-webpack-plugin
  3. 【Python基础】Python列表生成式
  4. red6.4 mysql_rhel6.4 yum本地yum源配置
  5. 【面向对象】包可见性和友元可见性
  6. 调试比较大小的 才=c语言,计算机等级二级C语言考试练习题(六)
  7. 每日记载内容总结39
  8. python 词云_python词云-数据产品岗位描述的词云
  9. 如何做一个“擅长” Google 搜索的开发专家?
  10. 龙蜥社区首届理事大会圆满召开!14家理事代表出席
  11. 不可能取消注册测绘师
  12. linux音乐服务器mpd,Arch Linux下使用Mpd+Mpc
  13. java 选项卡放左边_java-JTabbedPane:选项卡位置设置为LEFT但图标...
  14. 深度技术GHOST WIN7 SP1 装机旗舰版 2013 07
  15. 字体修改的一些心得以及方法分享
  16. android 微信摇一摇代码,Android微信摇一摇
  17. 摘自_sina_海派与京派画作_吴昌硕_徐渭_齐白石
  18. iPhone手机史上最全的扫盲帖【越狱,解锁,激活,Cydia,基带,裸机】
  19. java 记事本源代码_JAVA记事本源代码 收藏
  20. C语言除法”四舍五入“与“进一法”的实现

热门文章

  1. 【T+】畅捷通T+选项设置界面没有“数据精度”调整项
  2. Android键盘自定义表情包,关于自定义表情键盘...
  3. 离线地图开发-含源代码(免费)
  4. Docker之工作中常用的命令(二)
  5. Qt编写安防视频监控系统26-硬件加速
  6. c++动态存储空间分配
  7. GOOGLE 手机定位厘米挑战赛选手提到的技巧、方法总结
  8. 数据分析[1.1]--拆解方法总结
  9. 欧文分校的计算机科学博士,加州大学欧文分校
  10. laravel seeding