У меня две текстуры отображаются одинаково. Зеленая текстура имеет правильную прозрачность в нужных местах, но когда я перемещаю розовую текстуру вперед, она показывает цвет фона там, где она должна быть прозрачной.
Это фрагмент кода метода paintGL , который визуализирует текстуры.
void OpenGLWidget::paintGL()
{
// ...
for (int i = 0; i < lights.size(); i++)
{
glUseProgram(lights[i].program);
setUniform3fv(program, "lightPosition", 1, &lights[i].position[0]);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, lights[i].texture);
lights[i].svg.setColor(toColor(lights[i].diffuse));
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, lights[i].svg.width(), lights[i].svg.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, lights[i].svg.toImage().constBits());
glGenerateMipmap(GL_TEXTURE_2D);
glBindVertexArray(lights[i].vertexArray);
glDrawElements(GL_TRIANGLES, lights[i].indices.size(), GL_UNSIGNED_BYTE, nullptr);
}
update();
}
Метод toImage класса svg создает новый объект QImage из файла svg, поэтому новое значение текстуры должно обновляться с каждым кадром.
Где я делаю не так? Спасибо!