主要基于开源代码:https://github.com/ValveSoftware/openvr/tree/master/samples/hellovr_opengl
进行修改,开发工具:VS2015。
首先你得有四棱锥全景图,如下:xxx.png xxx.jpg 分辨率必须是4的倍数 宽高相同
bool CMainApplication::SetupTexturemaps()
{// 初始化 读取图片
rgbImg = imread("C:/.../xxx.jpg");
if (rgbImg.cols != rgbImg.rows | rgbImg.rows % 4 != 0 | rgbImg.cols % 4 != 0) {
cout << "分辨率有问题!" << endl;
getchar();
return false;
}
glGenTextures(1, &m_iTexture);
glBindTexture(GL_TEXTURE_2D, m_iTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, rgbImg.cols, rgbImg.rows, 0, GL_BGR, GL_UNSIGNED_BYTE, rgbImg.data);//贴图
glGenerateMipmap(GL_TEXTURE_2D);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
GLfloat fLargest;
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &fLargest);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, fLargest);
glBindTexture(GL_TEXTURE_2D, 0);
return (m_iTexture != 0);
}
然后修改void CMainApplication::AddCubeToScene( Matrix4 mat, std::vector<float> &vertdata )函数ÿ