Я пытаюсь отобразить текстуру на четырехугольнике, но цвета были заменены фиолетовым.
Код создан с сайта «learnopengl», но я не нашел того, что мне не удалось.
Здесь шейдеры.
vertSrc:cstring = """
#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec2 aTexCoord;
out vec2 texCoord;
uniform mat4 projection;
void main()
{
gl_Position = projection * vec4(aPos, 1.0f);
texCoord = aTexCoord;
}
"""
fragSrc:cstring = """
#version 330 core
out vec4 FragColor;
in vec2 texCoord;
uniform sampler2D matTexture;
void main()
{
FragColor = texture(matTexture, texCoord);
}
"""
код opengl для текстуры.
glGenTextures(1, addr textureID)
glBindTexture(GL_TEXTURE_2D, textureID)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, texWidth, texHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, addr imageData[0])
glGenerateMipmap(GL_TEXTURE_2D)
Загрузка изображений благодаря библиотеке stb_image.
var
textureID:OGLuint
texWidth:OGLint
texHeight:OGLint
channelCount:OGLint
imageData = stbi_load("Test/2d-rendering-test./stack.png", addr texWidth, addr texHeight, addr channelCount, 0)
И код opengl в основном цикле.
glBindTexture(GL_TEXTURE_2D, textureID)
Если вам интересно, вот полный файл nim, отображающий проблему.
https://bitbucket.org/Neotry/2d-rendering-test./src/master/WIPtest.nim