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

OpenGL jpg image loaded with SOIL is displayed slanted

提问人:Don'tDownVote 提问时间:4/21/2021 最后编辑:genpfaultDon'tDownVote 更新时间:4/21/2021 访问量:116

问:

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

预期版本

expectations

但是,它是这样显示的

reality

着色器包括:

顶点着色器

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

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

C++ OpenGL 土壤

评论

0赞 user253751 4/21/2021
您的图像不是 4 像素宽的倍数吗?如果是,它是否有效?
2赞 Rabbid76 4/21/2021
着色器代码没有问题。但之前设定glPixelStorei(GL_UNPACK_ALIGNMENT, 1)glTexImage2D
0赞 Don'tDownVote 4/21/2021
@Rabbid76 它奏效了,谢谢!
1赞 Quentin 4/21/2021
那边也有同样的问题

答:

2赞 Rabbid76 4/21/2021 #1

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

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);