Я пытаюсь следовать руководству по YT на канале 'Черно' об OpenGL (мой код можно найти здесь ). У меня есть две униформы u_Color
и u_Texture
, которые я загружаю, используя функцию glUniform1i
, вызываемую из файла Shader. cpp. Для u_Color
все в порядке, но когда я пытаюсь загрузить u_Texture
, я получаю код ошибки
0x502 (GL_INVALID_OPERATION; отладка Qt прекращает выводить сообщение об ошибке "Недопустимая операция").
Я пытался удалить неиспользуемые вызовы униформы "u_Color" в шейдере и cpp коде, я пытался использовать функцию вне макроса GLCall и некоторых других вещей, но она просто не хочет работать. Я уверен, что расположение текстуры в порядке (без знака int), и я думаю, что мой код выглядит точно так же, как тот из учебника, который действительно работает!
Я работаю в системе Linux (18.04), с Intel Графическая карта c, и я использую Qt Creator (Qt Creator 4.11.2 на основе Qt 5.14.2) с компилятором g ++ (7.5.0).
Если бы кто-нибудь мог проверить это, я бы очень признателен.
Это проблемная c часть кода из "Shader. cpp"
GLuint uniformlocation = static_cast<GLuint>(glGetUniformLocation(m_rendererID, "u_Texture"));
glUniform1f(uniformLocation, value);
А вот фрагментный шейдер, который использует u_Texture
#version 330 core
layout(location = 0) out vec4 color;
in vec2 v_TexCoord;
uniform vec4 u_Color;
uniform sampler2D u_Texture;
void main()
{
vec4 texColor = texture2D(u_Texture, v_TexCoord);
color = texColor;
}