OpenGL全屏显示背景贴图
在OpenGL中可以将图片设置为背景,具体操作如下:
1.切换为正交视角;
2.关闭深度测试;
3.将图片四个角的位置设置为正交窗口后裁剪面的四个角;
4.切换到透视视角;
5.开启深度测试;
6.显示三维场景;
具体实例代码如下:
void Display()
{
zoom = 300.f;
win_width = 1920;
win_height = 1080;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-zoom* win_width / win_height, zoom* win_width / win_height, -zoom, zoom, -300.0, 300.0); //切换为正交视角;
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(1.f, 1.f, 1.f);
glDisable(GL_DEPTH_TEST); //关闭深度测试;
texture = LoadTexture("C:\\Users\\Tiger\\Pictures\\308.bmp", 1920, 1080); //加载图片
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_QUADS); //将图片四个角的位置设置为正交窗口后裁剪面的四个角;
glTexCoord2d(0.0, 0.0); glVertex3d(-zoom * win_width / win_height, -zoom, -300);
glTexCoord2d(1.0, 0.0); glVertex3d(zoom * win_width / win_height, -zoom, -300);
glTexCoord2d(1.0, 1.0); glVertex3d(zoom * win_width / win_height, zoom, -300);
glTexCoord2d(0.0, 1.0); glVertex3d(-zoom * win_width / win_height, zoom, -300);
glEnd();
glDisable(GL_TEXTURE_2D);
glEnable(GL_DEPTH_TEST); //开启深度测试;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, (float)win_width/win_height, 0.01, 3000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//显示三维场景;
glColor3f(0.1f, 0.1f, 0.1f);
glLineWidth(0.1f);
glBegin(GL_LINES);
for (int i = -100; i <= 100; i += 10)
{
glVertex3f(i, 0, -100);
glVertex3f(i, 0, 100);
glVertex3f(100, 0, i);
glVertex3f(-100, 0, i);
}
glEnd();
glutSwapBuffers();
}
其中,图片加载部分的代码如下所示
int 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;
}
最后程序运行结果如下图所示:
OpenGL全屏显示背景贴图相关推荐
- 计算机屏幕显示不能全屏,电脑显示器不能全屏显示的解决方法步骤
你们知道电脑显示器不能全屏显示怎么解决吗,下面是学习啦小编带来的关于怎样解决电脑显示器不能全屏显示的内容,欢迎阅读! 解决电脑显示器不能全屏显示方法一 一.显卡驱动安装不正确; 二.检查显示器的分辨率 ...
- css背景图片高斯模糊_如何将网页CSS背景图高斯模糊且全屏显示
以Path为代表的,展示了这种背景图模糊并全屏显示的方法,而且会根据屏幕分辨率放大缩小. 这种效果应该怎么实现呢? 高斯模糊是PS.FW图片处理工具搞的. 全屏显示的方法 1:使用CSS .bg { ...
- HTML背景图全屏显示
要在HTML中实现全屏显示的背景图,可以使用CSS的background属性和一些特定的值来实现.以下是一种方法: HTML: <!DOCTYPE html> <html> & ...
- html中背景图按比例缩放全屏显示
html中背景图按比例缩放全屏显示,核心代码如下div: <body style="height: 100%; margin: 0;" onload="create ...
- html鼠标放上虚化背景图片,如何将网页CSS背景图高斯模糊且全屏显示
高斯模糊是PS.FW图片处理工具搞的. 全屏显示的方法 1:使用CSS.bg { background-image:url(scale.jpg); -moz-background-size: 100% ...
- 微信小程序页面添加背景图,图片全屏显示
前言 微信的wxss里面不允许使用使用 background: url(),只能另外找方法进行背景图片显示. 方法 1.wxss页面里面设置页面的全屏宽高,以及view添加宽高 page{height ...
- css 全屏显示一张图片_css3背景图片全屏显示的例子
背景图片全屏这个功能只需要定义重复即可解决了当然这个是有一些技巧了,下面我们就来看一篇关于css3背景图片全屏显示例子了,具体的如下所示. 如何用css背景图片拉伸 以及100% 满屏显示呢?这个问题 ...
- python画布添加背景图片_Python 设置 Canvas 背景图片且支持全屏显示
图1 全屏显示图片 由于 PhotoImage 若没有被引用,便会自动销毁,所以需要显示的引用它: from tkinter import Tk, Canvas from PIL import Ima ...
- 微信小程序背景图片全屏显示
微信小程序背景图片全屏显示 很多人在写小程序界面的时候希望背景图片是全屏覆盖显示的(包括顶部导航栏,如下图),那该如何实现呢? 以下是实现代码: wxml代码: <view class=&quo ...
最新文章
- pandas批量为列名添加字符并重命名实战
- Fabric--CA 应用与配置
- React-navigation之StackNavigator
- 【176天】黑马程序员27天视频学习笔记【Day11-上】
- 历史上的今天:ATT 成立;全球最大分布式计算项目正式停止;家酿俱乐部首次会议...
- 快速图像增强的简便大法来了,英伟达开源新库代号“DALI”| CVPR 18
- java 对象嵌套_java如何把嵌套的对象装入集合?
- SAP Smartform转成PDF方法汇总
- 推荐一款高效的处理延迟任务神器
- 安卓产品方案开发广告机案例
- 火影推荐程序连载6-径向模糊简介
- 宿舍路由器设置傻瓜教程
- Office 2016 系列 VOL版本下载
- request.querystring php,ASP_ASP读取Request.QueryString编码的函数代码,1. 支持参数纯汉字 ?a=深山老熊 - phpStudy...
- 蓝海彤翔执行副总裁张加廷接受【联播苏州】独家专访
- 华为南研所机考练习2-计算麻将的番数
- 第十届蓝桥杯JavaB组省赛真题
- 几种SFTP SSH工具
- 知识点 - 割点与割边
- Python画了一朵花
热门文章
- SAP各模块字段与表的对应关系
- Template-Based Named Entity Recognition Using BART
- CodeM资格赛A 音乐研究 题解
- 无人机从零到一(组装、校准到起飞)
- Linux(CentOS)下安装NVIDIA GPU驱动
- com.android.coolwind,土豆视频(com.tudou.android) - 9.2.5 - 应用 - 酷安
- 3、基于51单片机语音识别控制三路开关系统设计
- JavaScript 控制台输出彩色字
- 网络协议中的MTU和MSS
- MD5算法在PB中的实现(转载自 - 阿多米 - 博客园)