Cela devrait être simple: j'utilise un QGLWidget pour dessiner des graphiques openGL et je veux être capable d'écrire quelque chose sur les graphiques openGL rendus, donc j'utilise overpainting comme dans la démo Qt avec QPainter.QGLWidget - comment structurer un programme avec overpainting
Voici mes deux choix de travail de structurer mon programme:
// This works but it's probably stupid
paintEvent()
{
makeCurrent();
glewInit();
loadShaders();
loadTextures();
loadBuffers();
... actually paint something with openGL ...
QPainter painter(this);
... overpainting ...
}
------------------------------------------------------------------------------------
// This works and may probably be better
paintEvent()
{
QGLWidget::paintEvent(event); // Base class call, this calls initializeGL ONCE and then paintGL each time it's needed
QPainter painter(this);
... overpainting ...
}
initializeGL()
{
glewInit();
}
paintGL()
{
loadShaders();
loadTextures();
loadBuffers();
... actually paint something with openGL ...
}
Considérant que les textures et les shaders ne vont pas être toujours le même, est une de ces options acceptables (en performances et raisonnablement)?
Sinon: comment structureriez-vous le programme?
Merci pour toute aide
est-il correct de charger glew là? Je n'ai pas trouvé d'autre endroit pour charger glew –
Remarque: le paintEvent est levé plusieurs fois, malheureusement, le déplacement du code shaders/textures/buffers (VBO) dans initializeGL (qui est appelé juste au changement de contexte) provoque l'application ne pas être bien rendu –
@JohnnyPauling Pas vraiment. glew devrait être dans le principal, car il a besoin argc/argv de la principale() –