2009-07-30 12 views
0

Je veux concevoir & mettre en œuvre un Widget simple fenêtrage & pour OpenGL en cours d'exécution sur le dessus de SDL, un peu comme Agar ou GiGi, seulement beaucoup plus lié à SDL & OpenGL.question de conception pour une bibliothèque SDL OpenGL Window & Widget

Mon problème général est le suivant: quel est le meilleur design pour un système de fenêtrage dans un contexte OpenGL ?? Je veux avoir des fenêtres juste pour les contrôles, et, si cela est possible, des fenêtres filetées avec leurs propres contextes OpenGL. La seule façon que j'ai à ce sujet est de rendre des textures, et d'ajouter une décoration de fenêtre autour de ceux-ci ...

Je veux exposer le fonctionnement à d'autres programmeurs, mais de quelle manière serait le meilleur. Je suis plus un programmeur C++ et donc l'héritage était la première façon dont je pensais. Faire des classes de base que j'expose dans un fichier d'en-tête partagé, le programmeur dérive ensuite leur propre objet de fenêtre, en remplaçant les méthodes Init() ou Run() pour implémenter ce dont ils ont besoin. Le problème avec cette approche serait de garder les programmeurs en échec, il n'y aurait pas de véritable moyen de les empêcher de dessiner simplement où ils veulent dans l'écran OpenGL.

Une autre façon possible serait des foncteurs, passant les foncteurs que le programmeur veut employer dans la bibliothèque qui l'appelle alors quand il a fini de rendre ses composants d'interface graphique et quoi que ce soit.

Quelle est la meilleure façon d'aborder tout cela?

Répondre

0

fenêtres avec leurs propres OpenGL contextes

qui va exiger le piratage SDL, car il ne fournit qu'un seul contexte par processus. Sauf si vous envisagez de faire un seul contexte GL avec plusieurs sous-fenêtres indépendantes rendues en séquence.

+0

C'est un très bon point, jouer avec SDL lui-même n'était pas vraiment ce que j'avais en tête. Les fenêtres fonctionnent, sauf pour le transfert du dessin à l'extérieur de la bibliothèque. Je pensais plutôt à utiliser des objets Frame Buffer pour la surface de rendu des utilisateurs ', puis à texturer un quad pour la fenêtre avec quelques décorations. –