OpenGL: край скайбокса виден, если смотреть прямо вверх?

Я внедряю скайбокс в свою программу OpenGL и по большей части он работает нормально. Когда я вращаюсь вокруг горизонтально, скайбокс отображается незаметно. Проблема возникает, когда я пытаюсь повернуть камеру так, чтобы она выглядела почти вертикально, как на изображении ниже. Как видите, края очень хорошо видны:

введите описание изображения здесь

Как я могу это исправить? Я использую кубическую карту.

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);
}

вниз — назад — вперед

вниз назад фронт

влево — вправо — вверх

оставил право вверх

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]