Я пытаюсь передать размер кадра (X, Y) моему фрагментному шейдеру.Когда я выполняю функцию GLAD glUniformMatrix2fv
, я получаю следующую ошибку:
GL CALLBACK: ** ОШИБКА GL ** тип = "0x824c", серьезность = "0x9146", сообщение = ошибка имеетбыл создан.Ошибка GL GL_INVALID_OPERATION
Я использую этот метод для передачи glm::vec4
типов данных (используя glUniformMatrix4fv
) для многих других шейдеров без проблем.Я посмотрел тип ошибки 0x824c
, и он выглядит как DEBUG_TYPE_ERROR .Я проверил вызов функции в соответствующей документации , и она кажется правильной.Чего мне не хватает?
Код чертежа:
uFrameSizeID = glGetUniformLocation(shader->id(), "uFrameSize");
glUniformMatrix2fv(uFrameSizeID, 1, GL_FALSE, glm::value_ptr(
glm::vec2(static_cast<float>(X_RESOLUTION), static_cast<float>(Y_RESOLUTION))));
Фрагмент шейдера:
layout(location = 0) out vec4 FragColor;
in VertexData
{
vec4 color;
vec2 texCoords;
} fs_in;
uniform sampler2D uTexture;
uniform sampler2D uDistortionMapX;
uniform sampler2D uDistortionMapY;
uniform vec4 uWindow; // = [x0, y0, dx, dy]
uniform vec2 uFrameSize; // = [X, Y] float
void main()
{
vec2 v2_dist_vec;
v2_dist_vec.x = texture(uDistortionMapX, fs_in.texCoords).r;
v2_dist_vec.y = texture(uDistortionMapY, fs_in.texCoords).r;
FragColor = texture(uTexture, fs_in.texCoords + v2_corr_vec);
}