全景图转换为天空盒图

本文介绍如何使用OpenGL将720度全景图转换为天空盒图。通过加载全景图,调整视线方向进行六个面的截图,分别对应天空盒的前、后、左、右、顶、底面。最终展示效果图,尽管存在边界处理问题,作者期待进一步学习和高手指导。
摘要由CSDN通过智能技术生成

现在来试试  球纹理(=720度全景图)转换为天空盒图(6张,前,后,左,右,顶,底)

先找一张全景图:


流程:

1。载入全景图到opengl 中并贴到天空球上

2。把视线分别转到前,后,左,右,顶,底

3。截屏保存为文件

具体看代码吧:

//53 全景球贴图 切分6图

//左键(+ 移动)旋转,右键(+ 移动)缩放 1,2,3,4 切换地图,回车键(enter)全屏切换,按w、a、s、d、f、x、切换视角并截图

#pragma comment( lib, "opengl32.lib" )                
#pragma comment( lib, "glut32.lib")
#include <GL/glut.h>
#include <GL/glu.h>
#include <math.h>       
#include <cstdlib>
#include <string>

#include "ArcBall.h"      
#include "Sky.h"

CSky m_sky;

void setWidthHeight(GLint width ,GLint height);
void screenshot(char* FileName);  //全窗口

int BuildTexture(char *szPathName, GLuint &texid);

//初始化,必须用全局变量的方式,不能用new
ArcBallT arcBall(600.0f,400.0f);
ArcBallT*    ArcBall =&arcBall;// new ArcBallT(600.0f,400.0f);//&arcBall;
#define PI 3.141592654

GLuint SkyTexture[10];//纹理
int width,height;//屏幕宽高
	int R=100;//地图球半径
	std::string direction;//方向

void reshape(int w, int h){
    glViewport(0,0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
	//GLdouble zNear=R*cos(PI/2);
    gluPerspective(90
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值