© 2013 All rights reserved.
1

Menu v OpenGL

Vytvoření jednoduchého nebo hierarchického menu v OpenGl.

Jednoduché menu

Nejprve si ukážeme, jak vytvořit jednoduché menu a poté hierarchické. Pro oba případy budeme používat model, který je již definován v aplikačním programu.

Pro lepší pochopení jednoduchého menu si vše vysvětlíme na příkladu:

Přičemž ještě musíme nadefinovat obsluhující funkci hlavniMenu():

Samotné menu se vytváří tak, že si zavoláme funkci glutCreateMenu() a jako její parametr dáme jméno obsluhující funkce. Ta je zavolána kdykoliv je kliknuto na některou položku menu. Položku menu přidáme pomocí glutAddMenuEntry(), kde jejím prvním parametrem je řetězec znaků, který se bude zobrazovat a druhý je hodnota, která se předává obsluhující funkci. Proto musíme ve funkci pro obsluhu zajistit, aby při kliknutí na kteroukoliv položku menu bylo provedeno to, co jsme zamýšleli.

Na konci definování menu ještě přiřadíme klávesu či tlačítko myši, které vyvolá menu. Nejčastěji se přiřazuje k myši a proto se menu objevuje právě u jejího kurzoru.
Námi vytvořené menu vypadá následnovně:


opengl menu img 1

Hierarchické menu

Hierarchické menu je poněkud složitější. Opět si celý postup vysvětlíme na příkladu.

Nejprve musíme nadeklarovat identifikátory jednotlivých podmenu:

Poté jednotlivá podmenu:

Zde přiřazujeme integer hodnotu do námi deklarovaných proměnných, kterou dále použijeme při přidávání do hlavního menu. Viz následující zdrojový kód:

Opět zde musíme přiřadit klávesu či tlačítko myši pro vyvolání menu. Ale oběvuje se nám zde nová funkce a tou je glutAddSubMenu(), jejíž první parametr je řetězec znaků zobrazující se v menu a druhý je právě daný identifikátor, který byl vygenerován při vytváření jednotlivých podmenu. Tato funkce přidá podmenu do hlavního menu stejně jako funkce glutAddMenuEntry() přidává jednotlivé položky.

Ještě musíme samozřejmě nadeklarovat jednotlivé funkce pro obsluhu, které by mohly vypadat nějak takhle:

Námi vytvořené menu vypadá takto:


opengl menu img 2

To je pro tentokrát všechno…

Comments (1)

Mohl bych dyžtak poprosit o nejaky članek jak vlastně s OpenGl začit od nuly. Javu zvladam obstojne ale s timhle zkušenosti nemam a zatim včechny članky z tohodle blogu bych hodnotil na vybornou.

Add comment

About
Hi, i am programmer from the Czech Republic. I love web development (Ruby, Ruby on Rails, PHP, Nette) and iOS development (Objective-C, Cocoa).
To cooperate, here is my phone:
+420 608 836