加载了 SOIL 的 OpenGL jpg 图像倾斜显示

OpenGL jpg image loaded with SOIL is displayed slanted

使用SOIL加载jpg图片时,图片显示倾斜,颜色不对(我不知道怎么形容,因为是彩色的,但看起来是黑白的)

预期版本

然而,它是这样显示的

着色器是:

顶点着色器

#version 330 core
layout (location = 0) in vec3 position;
layout (location = 1) in vec3 color;
layout (location = 2) in vec2 texCoord;
out vec3 ourColor;
out vec2 TexCoord;
void main(){
    gl_Position = vec4(position, 1.0f);
    ourColor = color;
    TexCoord = texCoord;
}

片段着色器

#version 330 core
in vec3 ourColor;
in vec2 TexCoord;
out vec4 color;
uniform sampler2D ourTexture;
void main(){
    color = texture(ourTexture, TexCoord);
}

如何正确显示,预期的方式?

默认情况下,OpenGL 假定图像的每一行的开头与 4 个字节对齐。这是因为GL_UNPACK_ALIGNMENT参数默认为4,如果图片格式为RGB,且width*3不能被4整除,则必须先更改参数再指定二维纹理图像(glTexImage2D):

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);