我有一个小问题:
我知道在UV中,原点(0,0)在左下角。
我在发现opengl方面很先进(我使用lwjgl 3),我想创建一个接口。
我认为,我只需要显示一个包含文本的纹理即可显示按钮。
因此,我像往常一样创建了一个新的着色器(vertexShader + fragmenShader)。
但令人惊讶的是,我的质地倒挂了!为什么?
很奇怪。
这是我的vertexShader:
#version 330
in vec3 position;
in vec2 texCoords;
out vec2 pass_texCoords;
void main() {
gl_Position = vec4(position, 1);
pass_texCoords = texCoords;
}
这是我的fragmentShader:
#version 330
in vec2 pass_texCoords;
out vec4 out_Color;
uniform sampler2D texSampler;
void main() {
out_Color = texture(texSampler, pass_texCoords);
}
这就是我创建vao的方式
(目前我打算显示一个三角形):
my vetrices : -0.5, 0.5, 0, -0.5, -0.5, 0, 0.5, -0.5, 0
my texCoords : 0, 1, 0, 0, 1, 0
my indices : 0, 1, 2
现在如何显示它:
//bind shader, bind VAO, enable VBOs
GL13.glActiveTexture(GL13.GL_TEXTURE0);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture);
GL11.glDrawElements(GL11.GL_TRIANGLES, 3, GL11.GL_UNSIGNED_INT, 0);
//disableVBOs, unbind VAO, unbind shader
我的三角形看起来像(但是里面的纹理是倒置的):
| \
| \
| \
|_________
需要更多代码吗? 我知道如何手动反转纹理,但是我认为最好的方法是发现问题...
但是,如果有人知道如何以更好的方式添加用户界面,那么我不止于此!