OpenGL:直视时天空盒边缘是否可见?

时间:2018-06-18 02:12:54

标签: c++ opengl skybox

我正在我的OpenGL程序中实现skybox,并且在大多数情况下它工作正常。当我水平旋转时,天空盒会无缝渲染。当我尝试旋转相机以使其几乎垂直向上看时,问题就出现了,如下图所示。如您所见,边缘非常明显:

enter image description here

我该如何解决这个问题?我正在使用立方体贴图。

for (GLuint i = 0; i < images.size(); i++){
    std::string fileExtension = Util::getFileExtension(images[i]);
    imageData = Util::loadImage(images[i].c_str(), &width, &height, &numChannel);
    std::pair<GLint, GLint> textureFormat = Util::getGLColorFormat(fileExtension, numChannel);
    glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, textureFormat.first, width, height, 0, textureFormat.second, GL_UNSIGNED_BYTE, imageData);
    Util::freeImageData(imageData);
}
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);

这是我的片段着色器:

varying vec3 texCoord;
uniform samplerCube skybox;

void main(){
    gl_FragColor = vec4(texture(skybox, texCoord).rgba);
}

down-back - front

down back front

左 - 右 - 上

left right up

0 个答案:

没有答案