Interactive Mandelbrot viewer with Qt and OpenGL.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#include "../headers/Mandelbrot.h"
|
|
|
|
|
|
|
|
void Mandelbrot::init() {
|
|
|
|
initializeOpenGLFunctions();
|
|
|
|
}
|
|
|
|
|
|
|
|
void Mandelbrot::draw(GLuint vao, QOpenGLShaderProgram& shader) {
|
|
|
|
glClear(GL_COLOR_BUFFER_BIT);
|
|
|
|
shader.bind();
|
|
|
|
setShaderValues(shader);
|
|
|
|
glBindVertexArray(vao);
|
|
|
|
glDrawArrays(GL_QUADS, 0, 4);
|
|
|
|
glBindVertexArray(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
void Mandelbrot::setShaderValues(QOpenGLShaderProgram &shader) const {
|
|
|
|
shader.setUniformValue("origin", QVector2D(-1, 1));
|
|
|
|
shader.setUniformValue("size", QVector2D(2, 2));
|
|
|
|
shader.setUniformValue("iterationCount", iterations);
|
|
|
|
}
|
|
|
|
|
|
|
|
void Mandelbrot::zoom(double delta) {
|
|
|
|
scale *= delta;
|
|
|
|
}
|
|
|
|
|
|
|
|
void Mandelbrot::setIterations(int value) {
|
|
|
|
iterations = value;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|