OpenGL - происхождение текстуры вверху слева - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть небольшая проблема:
Я знаю, что в 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

Мой треугольник выглядит (но текстура внутри перевернута):

      |  \
      |    \
      |      \
      |_________

Нужно больше кода?Я знаю, как инвертировать текстуру вручную, но я думаю, что лучший способ - найти проблему ...

Но если кто-то знает, как лучше добавить пользовательский интерфейс, я более чем заинтересован!

...