如何在opengl中实现360度视频输出

如何在opengl中实现360度视频输出,opengl,shader,panoramas,360-degrees,Opengl,Shader,Panoramas,360 Degrees,我想有OpenGL输出与球形投影,使360视频 现在我有了立方体贴图面,它们是由6个透视摄影机生成的 我需要这样的东西: 如何获得此输出 有什么想法吗?这取决于您希望使用的精确投影。对于简单的球形投影,可以使用以下片段着色器将四边形渲染到目标纹理中: uniform samplerCube tex; in vec2 texcoord; out vec4 OUT; void main() { vec3 d = vec3( cos(texcoord[0])*cos(tex

我想有OpenGL输出与球形投影,使360视频

现在我有了立方体贴图面,它们是由6个透视摄影机生成的

我需要这样的东西:

如何获得此输出


有什么想法吗?

这取决于您希望使用的精确投影。对于简单的球形投影,可以使用以下片段着色器将四边形渲染到目标纹理中:

uniform samplerCube tex;
in vec2 texcoord;
out vec4 OUT;

void main() {
    vec3 d = vec3(
        cos(texcoord[0])*cos(texcoord[1]),
        sin(texcoord[0])*cos(texcoord[1]),
        sin(texcoord[1])
    );
    OUT = texture(tex, d);
}

texcoord
应在左下角的
(-tau/2,-tau/4)
和右上角的
(tau/2,tau/4)
之间变化。

这取决于您预期使用的精确投影。对于简单的球形投影,可以使用以下片段着色器将四边形渲染到目标纹理中:

uniform samplerCube tex;
in vec2 texcoord;
out vec4 OUT;

void main() {
    vec3 d = vec3(
        cos(texcoord[0])*cos(texcoord[1]),
        sin(texcoord[0])*cos(texcoord[1]),
        sin(texcoord[1])
    );
    OUT = texture(tex, d);
}

texcoord
应在左下角的
(-tau/2,-tau/4)
和右上角的
(tau/2,tau/4)
之间变化。

谢谢@ybungalobill,您的解决方案确实很有帮助,但这并不是我想要的,我终于在这里找到了:,无论如何,谢谢你的帮助性回答。这是一样的。谢谢@ybungalobill,你的解决方案真的很有帮助,但这并不是我想要的,我终于在这里找到了:,无论如何,谢谢你的帮助性回答。这是一样的。