4) Opcjonalne: glGenFramebuffers(); glBindFramebuffer(); glFramebufferTexture2D(); glCheckFramebufferStatus();

5) Rysowanie/Działanie: glGetIntegerv(); glBindFramebuffer(); glViewport(); glClear(); glUseProgram(); glActiveTexture(); glBindTexture() glGetUniformLocation(); glUniform1i(); glBindVertexArray(); glDrawArrays();

Niezbędne makra: GL_VERTEX_SHADER, GL_COMPILE_STATUS, GL_FRAGMENT_SHADER, GL_LINK_STATUS, GL_ARRAY_BUFFER, GL_STATIC_DRAW, GL_FALSE, GL_FLOAT, GL_TEXTURE0, GL_TEXTURE_2D, GL_RGBA, GL_BGRA, GL_UNSIGNED_BYTE, GL_TEXTURE_MIN_FILTER, GL_LINEAR, GL_COLOR_BUFFER_BIT, GL_TRIANGLES, Dodatkowe makra: GL_FRAMEBUFFER,, GL_COLOR_ATTACHMENT0, GL_DRAW_FRAMEBUFFER_BINDING, Szczegóły na temat poszczególnych funkcji oraz makr podane są na stronie dokumentacji OpenGL.

Plik main.cpp# include "mainwindow.h" # include <QApplication> # include <QSurfaceFormat>

int main(int argc, char *argv[]) { QApplication a(argc, argv);

QSurfaceFormat format = QSurfaceFormat::defaultFormat(); format.setProfile(QSurfaceFormat::CoreProfile); format.setVersion(3,3); QSurfaceFormat::setDefaultFormat(format);

MainWindow w; w.show();

return a.exec(); }

Plik mainwindow.h# ifndef MAINWINDOW_H # define MAINWINDOW_H

//#include <QMainWindow> # include <QOpenGLFunctions_3_3_Core> # include