我正在我的OpenGL程序中实现skybox,并且在大多数情况下它工作正常。当我水平旋转时,天空盒会无缝渲染。当我尝试旋转相机以使其几乎垂直向上看时,问题就出现了,如下图所示。如您所见,边缘非常明显:
我该如何解决这个问题?我正在使用立方体贴图。
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
左 - 右 - 上