C++ a OpenGL v QT Creator
V tomto článku si ukážeme ako nainštalovať a nastaviť pod Linuxom GLUT pre OpenGL, a ako s ním pracovať v QT Creator pomocou C++.
Najskôr musíme glut nainštalovať:
apt install freeglut*
V QT Creator vytvoríme nový projekt ako konzolovú C++ aplikáciu a do súboru nazov_projektu.pro pridáme:
QT += core \
opengl
LIBS += -lglut
Do main.cpp pridáme:
#include "GL/glut.h"
Hlavná funkcia main v main.cpp je stručná. Vložíme veci na inicializáciu okna v ktorom budeme vykreslovať pomocou OpenGL.
int main(int argc, char *argv[])
{ glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA|GLUT_SINGLE); //nastavenie okna
glutInitWindowSize(700, 500); //velkost okna
glutInitWindowPosition(100, 100); //pozicia kde sa okno otvori
glutCreateWindow("OpenGL test"); //nazov okna
glutDisplayFunc(onDisplay); //nadefinovanie cez parameter funkciu, ktora sa spusti pri spusteni
glutReshapeFunc(onResize); //nadefinovanie funkcie, ktora sa spusti pri zmene velkosti okna
glutKeyboardFunc(onKeyboard); //nadefinovanie funkcie, ktora sa spusti ked stlacime nejaku klavesu
glutMainLoop(); //aby nam aplikacia hned neskoncila
return 0;
}
Nadefinovanie funkcií ktoré sme použili v parametroch vo funkcii main. Deklarácia týchto funkcií musí byť v súbore nad deklaráciou main.
int x(100),y(100);
void onResize(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, w, 0, h, -1, 1);
}
void onKeyboard(unsigned char key, int p_x, int p_y)
{
glClear(GL_COLOR_BUFFER_BIT);
glFlush(); //zmaze vsetko co je vykresnele
if (key == 'a') x = x - 10; //pomocou 'a' a 'd' klavesy mozeme menit velkost trojuholnika
else if (key == 'd') x = x + 10;
glColor3b(100,100,100); //nastavenie farby vsetkeho co sa vykresli
glBegin(GL_TRIANGLE_STRIP); //zaciatok vykreslovania jedneho aspon trojuholnika
glVertex2f(10,400+x); //zadavanie bodov trojuholnika
glVertex2f(10,50);
glVertex2f(400+x,50);
glVertex2f(10,50);
glEnd(); //koniec zadavania bodov
glutSwapBuffers(); //daj na obrazovku
}
void onDisplay()
{
onKeyboard('d', 0,0); //kod ktory sa spusti pri spusteni aplikacie
}
Spustíme kompiláciu a malo by to všetko ísť.
Príspevok pridaný dňa: 24.06.2017 od užívatela: Dodoslav.