52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
// Basé sur :
|
|
// CC-BY Edouard.Thiel@univ-amu.fr - 22/01/2019
|
|
|
|
#include "princ.h"
|
|
#include "glarea.h"
|
|
#include "fish_painter.h"
|
|
#include "fish_schooling.h"
|
|
#include <QApplication>
|
|
#include <QTimer>
|
|
#include <QElapsedTimer>
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
QApplication app(argc, argv);
|
|
Princ main_window;
|
|
|
|
FishSchooling schooling(20);
|
|
FishPainter fish_painter;
|
|
|
|
GLArea *glarea = main_window.glarea;
|
|
QObject::connect(glarea, &GLArea::onInit,
|
|
[&](QOpenGLExtraFunctions *glf) {
|
|
fish_painter.create(glf);
|
|
});
|
|
QObject::connect(glarea, &GLArea::onPaint,
|
|
[&](QOpenGLExtraFunctions *glf,
|
|
const QMatrix4x4 &projection,
|
|
const QMatrix4x4 &view) {
|
|
fish_painter.paint(glf, projection, view,
|
|
schooling.fishes);
|
|
});
|
|
|
|
QTimer timer;
|
|
timer.setInterval(1000. / 60);
|
|
QElapsedTimer elapsed_timer;
|
|
elapsed_timer.start();
|
|
qint64 old_chrono = 0;
|
|
QObject::connect(&timer, &QTimer::timeout, [&]() {
|
|
qint64 chrono = elapsed_timer.elapsed();
|
|
float dt = (chrono - old_chrono) / 1000.0f;
|
|
old_chrono = chrono;
|
|
schooling.animate(dt);
|
|
glarea->update();
|
|
});
|
|
timer.start();
|
|
|
|
|
|
main_window.show();
|
|
return app.exec();
|
|
}
|