У меня есть небольшая проблема:
Я знаю, что в 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;
}
Это мой фрагментShader:
#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
Мой треугольник выглядит (но текстура внутри перевернута):
| \
| \
| \
|_________
Нужно больше кода?Я знаю, как инвертировать текстуру вручную, но я думаю, что лучший способ - найти проблему ...
Но если кто-то знает, как лучше добавить пользовательский интерфейс, я более чем заинтересован!