|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre habitué
![]() Mickaël LeclercIngénieur développement logiciels Inscription : août 2008 Messages : 251 ![]() |
Bien le bonjour,
Je travaille sur un moteur de rendu en OpenGL et j'arrive maintenant sur la gestion des ressources. J'ai vu deux façon de faire lors de la création d'une ressource. La première, classique, consiste à retourner un pointeur sur la ressource créée Code :
Code :
"The renderer provides the ability for other classes to create and reference the various Direct3D 11 objects. The primary objects that other non-rendering system classes will be interested in are the memory resource classes, which represent buffers and textures. The renderer allows creation of these objects, but retains ownership of them and returns only an ID to the caller. That ID is then used by the caller any time they want to reference a particular resource. This pattern is also followed for non-resource classes as well, such as shader objects, samplers, input layouts, and so on. Instead of making the other classes work with direct references to D3D11 objects, they are instead referenced by IDs. This allows the renderer to keep control over how and when the D3D11 objects are used, and minimizes the direct knowledge needed by the application to use the engine." Quel pattern utilisez-vous le plus et pourquoi ? Kromagg
__________________
C'est dans ses rêves que l'homme trouve la liberté cela fut, est et restera la vérité! (John Keating - Le cercle des poètes disparus) |
||||
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 914 ![]() |
Salut,
personnellement j'utilise une variante du 2e pour garder une trace de toutes les ressources créées et pouvoir les libérer/y accéder plus facilement. J'ai aussi une surcouche car je stocke, par exemple, les identifiants de textures dans des objets de classe Texture. C'est donc ensuite une liste de Texture que je stocke dans le Renderder et non pas une liste d'IDs.
__________________
Vive les roues en pierre |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() ![]() Alexandre LaurentIngénieur développement logiciels Inscription : mai 2008 Messages : 10 476 ![]() |
Bonjour,
Comme tu l'énonce, ta première méthode, tu dépend trop de l'API sous jacente. Imagine que tu veuille faire du DirectX, de l'OpenGL et d'un troisième truc ... bah en retournant les objets eux mêmes (ou les pointeurs, peut importe) tu te lie trop au type en question.
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi ![]() La rubrique a aussi un blog ! Ma page sur DVP Mon Portfolio Qui connaît l'erreur, connaît la solution. |
|
00
|
|
|
#4 | |
|
Membre habitué
![]() Mickaël LeclercIngénieur développement logiciels Inscription : août 2008 Messages : 251 ![]() |
Citation:
Avec la première méthode je retourne directement un pointeur sur un objet de type Texture2D. Avec la seconde méthode je retourne un handle sur l'objet. Mais quand je vais accéder à la ressource en elle-même grâce à son handle je vais également obtenir un pointeur sur un object de type Texture2D. Dans ce cas, quelle différence y'a t-il entre la première et la deuxième méthode ? Kromagg
__________________
C'est dans ses rêves que l'homme trouve la liberté cela fut, est et restera la vérité! (John Keating - Le cercle des poètes disparus) |
|
|
00
|
|
|
#5 | |
![]() ![]() ![]() ![]() Alexandre LaurentIngénieur développement logiciels Inscription : mai 2008 Messages : 10 476 ![]() |
Citation:
bindTex2D() deleteTex2D() (Après, ton moteur pourra faire toujours un test si l'ID passé correspond bien à la plage des Texture2D), mais au moins, dans ce cas là, tu n'aura jamais d'objet Texture2D réellement visible. Mais, je trouve mon approche trop C. Sinon, la méthode une est mieux, dans le style approche C++, si le pointeur que tu renvoie est une interface. Cela n'empêche pas de garder trace de tout ce qui est fait.
__________________
Vous souhaitez participer à la rubrique 2D / 3D / Jeux ? Contactez-moi ![]() La rubrique a aussi un blog ! Ma page sur DVP Mon Portfolio Qui connaît l'erreur, connaît la solution. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com