帮助OpenGL ES - 改善PanoramaGL的球形分辨率?

时间:2010-12-11 18:18:30

标签: iphone objective-c opengl-es 3d panoramas

那天晚上我开始玩PanoramaGL。在完成下载的项目后(有一些小问题阻止它从门外编译),我开始工作了 - 我加载了一个1200乘512(ish)的全景图像,得到的球形视图工作得很好。两个问题:我加载了太大的纹理,这使得它只能在iPhone4上工作(至少,我认为这就是为什么它在我的iPad上不起作用),而且全景变得相当模糊。 / p>

我开始做一些关于在iPhone上做3D的研究,我不会(也)不好意思承认大多数概念都在我头上。我没有任何使用3D的经验,我希望能从StackOverflow的好人那里得到一些帮助。

这就是我想要做的事情:我想把我的全景图像分解成瓷砖(我正在考虑垂直条带,但我愿意以其他方式做到这一点)。我想在PLSphere视图上将这些图块作为纹理加载,并告诉它某个图块对应于某些角度。

查看PanoramaGL的来源,看起来有一个放置此代码的好地方。在PLSphere类中,有以下代码块:

- (void)internalRender
{
    gluQuadricNormals(quadratic, GLU_SMOOTH);
    gluQuadricTexture(quadratic, true);

    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, ((PLTexture *)[textures objectAtIndex:0]).textureId);

    gluSphere(quadratic, kRatio, divs, divs);

    glDisable(GL_TEXTURE_2D);
}

查看PLCube,我在其internalRender方法中看到以下代码:

// Front Face
glBindTexture(GL_TEXTURE_2D, ((PLTexture *)[textures objectAtIndex:kCubeFrontFaceIndex]).textureId);
glNormal3f(0.0f, 0.0f, 1.0f);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

基于此,我认为我可以指定方向(使用glNormal3f之类的东西)并将图块绑定为纹理。

我在这里走在正确的轨道上吗?我希望有人可以为我提供指导,让它发挥作用。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用hugin / pano将球形更改为6个立方体纹理 见

http://vinayhacks.blogspot.com/2010/11/converting-equirectangular-panorama-to.html

不要纹理大小必须是2的幂?