Quel est le but d'une bibliothèque graphique comme OpenGL?
Je réalise que c'est probablement une question ridicule, mais avant d'essayer de comprendre ce que les bibliothèques à utiliser pour les projets, je pense qu'il fait sens pour vraiment comprendre le but de ces bibliothèques en premier.
Beaucoup de jeux vidéo utilisation des bibliothèques comme OpenGL. Tous les tutoriels que j'ai vu de ces bibliothèques démontrer comment écrire un code qui indique à l'ordinateur pour en tirer quelque chose. C'est que, dans les jeux ces jours-ci, tout est modélisé à l'aide d'un logiciel comme Zbrush, Maya ou 3ds Max. Les modèles sont texturés et êtes bon pour aller. Il semble que tout vous devez faire est d'écrire une boucle d'animation qui dessine les modèles et les mises à jour à plusieurs reprises plutôt que de programmer le code de tirer chaque petite chose. Qui serait à la fois très coûteux en temps et rendre les modèles inutile. D'où vient donc OpenGL ou direct3d venir en matière de jeux vidéo et de la 3d art? Ce qui est essentiel à leur sujet lorsque tous les graphiques sont déjà créés et ont juste besoin d'être chargé et tiré? Ils sont utilisés principalement pour les shaders et les effets?
Cette question peut seulement prouver comment les nouvelles, je suis pour, mais c'est une je n'ai jamais entendu demandé. Je viens juste de commencer à apprendre la programmation et je suis à la compréhension du code et de logique assez bien, mais je ne comprends pas bibliothèques graphiques ou de certains cadres à tous et tutoriels ne sont pas à l'aider.
J'ai lu que l'. Je sais que ce logiciel de modélisation. Le problème, c'est la seule tutoriels pour les bibliothèques graphiques que je peux trouver sont en démontrant comment modéliser des choses avec le code, qui n'a pas de sens dans des projets réels lorsque vous êtes en utilisant un logiciel externe pour obtenir votre graphique. Je n'ai tout simplement pas comprendre ce que la partie graphique jouent les bibliothèques dans les graphiques.
OpenGL ou Direct3D sont assez bas niveau des abstractions. Ils sont les blocs de construction de niveau supérieur, des outils ont été construits.
Un exemple de pourquoi je suis confus quant à son but, c'est que pour mettre en œuvre des graphiques pour un jeu en 2D, vous avez essentiellement constamment de charger des images, puis de les dessiner à l'écran. Les seules choses impliqués sont le langage de programmation et les images que vous souhaitez charger. Je ne comprends pas pourquoi vous ne pouvez pas faire cela avec de la 3D. Ce qui rend les choses comme OpenGL d'une telle nécessité?
Donc, c'est juste pour l'optimisation?
OriginalL'auteur user1558737 | 2012-07-27
Vous devez vous connecter pour publier un commentaire.
Tout ce qui se passe dans un ordinateur n'est qu'un programme, sous une forme à l'informe de la exactement quoi faire. Les lettres que ce message est composé de seulement apparaissent parce que votre navigateur de choix téléchargé ce fichier via le protocole TCP/IP via un protocole HTTP, décodé son codé en UTF-8 de texte, l'interprétation de texte tel que défini par le code XML, HTML, JavaScript, et ainsi de suite, les normes, et affiche ensuite la partie visible tel que défini par le standard Unicode pour la présentation du texte et en accord avec le HTML et al, à l'aide de l'affichage et de fenêtrage capacités de votre système d'exploitation ou le gestionnaire de fenêtres ou quoi que ce soit.
Chaque partie de l'opération, à partir du téléchargement du fichier de son affichage est régie par un morceau de code. Chaque pixel vous êtes à la recherche à l'écran, c'est parce que du code l'a mis là.
HTML seul ne veut rien dire. Vous ne pouvez pas il suffit de prendre un fichier HTML et le souffle à l'écran. Un peu de code doit interpréter. Vous pouvez interpréter le HTML dans un fichier texte, mais si vous le faites, il perd toute la mise en forme, et vous obtenez de voir tous les tags. Un des navigateurs web permettent de l'interpréter correctement l'HTML, dans ce cas, vous obtenez de voir la mise en forme. Mais dans tous les cas, le sens d'un fichier HTML est déterminé par comment il est utilisé.
La "dessine le modèle de" la partie de votre algorithme proposé doit être fait par quelqu'un. Si vous n'écrivez pas que le code, alors vous devez être à l'aide d'une bibliothèque ou d'un autre système qui va provoquer le modèle à apparaître. Et ce n'est que de la bibliothèque? Comment met-il en cause le modèle d'apparaître?
Un modèle, comme une page web HTML, est pas de sens par lui-même. Ou pour le dire d'une autre façon, votre algorithme se résument à ceci:
Il vous manque un élément clé: comment interpréter le modèle et la cause qu'il apparaisse sur l'écran. OpenGL/D3D/un logiciel rasterizer/etc est essentiel pour cette tâche.
Oui. Quelque chose, quelque part, a fait tirer les choses. OpenGL est un portable, relativement API de bas niveau pour le code qui fait que pour les graphismes 3D.
OriginalL'auteur Nicol Bolas
D'abord et avant tout: OpenGL n'est pas une bibliothèque proprement dit, mais d'une API (cahier des charges). OpenGL API peut être mis en œuvre dans sa forme comme une bibliothèque logicielle, mais ces jours-ci est beaucoup plus commun pour mettre en œuvre OpenGL sous la forme d'un pilote qui tourne OpenGL des appels de fonction dans les commandes de contrôle à un processeur graphique assis sur une carte graphique (GPU).
Oui. C'est parce que les choses doivent être tirée à en faire un usage quelconque.
À ce point, les modèles se composent d'une grande liste de nombres, et les nombres de plus que dire, comment les autres numéros forment une sorte de géométrie. Ces chiffres ne sont pas une sorte de prêt à l'usage de l'image.
Ils sont un tas de chiffres, et ce qu'ils ont certains numéros supplémentaires de contrôle de la texturation. Les textures eux-mêmes à leur tour, seulement des chiffres.
Et comment pensez-vous que ce dessin va se passer? Il n'y a pas de magie "vous avez ici un modèle d'affichage" de la fonction. Parce que pour l'un, la manière dont les chiffres d'un modèle peut avoir toute sorte de sens. Si un programme doit donner un sens à ces chiffres. Et c'est un moteur de rendu.
Encore une fois, il n'y a pas de magie "tirage" de la fonction. Dessin d'un modèle consiste à passer par chacun de ses numéros, il se compose d', et en tournant ceux que les commandes de dessin pour le GPU.
Comment sont les modèles inutiles, quand ils sont ce qui est le contrôle de l'émission de commandes OpenGL. Ou pensez-vous OpenGL est utilisé pour réellement "créer" des modèles?
Il est utilisé pour transformer les numéros de modèle 3D, il est enregistré à l'écart à partir d'une modélisation, en quelque chose d'agréable à regarder.
Le graphisme n'est pas encore créé, lorsque le modèle est fait. Ce qui est créé est un modèle, et à certains auxiliaires de données sous forme de textures et de shaders, qui sont ensuite transformés en graphiques en temps réel, au moment de l'exécution du programme.
De nouveau, après avoir été chargé, un modèle est donc tout un tas de chiffres. Et le dessin moyen, en tournant ces nombres dans quelque chose à regarder, ce qui nécessite l'envoi de commandes de dessin pour le processeur graphique (GPU), ce qui se passe à l'aide d'un API comme OpenGL ou Direct3D
Ils sont utilisés pour faire le nombre généré par un programme de modélisation 3D (Blender, Maya, ZBrush) dans une image réelle.
Même de Java kits graphiques SWING et AWT sont simplement construites sur les primitives graphiques de l'OS. Et sur certains OS, c'est vraiment OpenGL. Java (le langage) diesn ont pas les capacités de la carte graphique.
OriginalL'auteur datenwolf
Avant OpenGL et DirectX, les jeux devaient utiliser des instructions spéciales en fonction de ce que la carte graphique que vous aviez. Lorsque vous avez acheté un nouveau jeu, vous avez dû vérifier soigneusement si votre carte a été pris en charge, ou vous ne pouvez pas utiliser le jeu.
OpenGL et DirectX est un API standardisée pour la grapics cartes. Une bibliothèque est livré par le fabricant de la carte. Si ils suivre le cahier des charges, vous avez la garantie que les jeux fonctionnent (si ils suivent également la même spécification).
OriginalL'auteur Lars Pensjö
Vous avez données. Comme un modèle, avec les sommets, les normales et les textures. @Datenwolf indiqué ci-dessus, celles-ci sont seulement des chiffres assis sur le disque dur ou dans la mémoire RAM, pas de couleurs sur l'écran.
Votre CPU (qui est l'endroit où le programme que vous écrivez pistes) ne peut pas parler de l'écran directement. Au lieu de cela, vous envoyez les données que vous voulez dessiner sur le GPU. Le GPU puis dessine les données. Des Api graphiques comme l'OpenGL et Direct3D autoriser les programmes en cours d'exécution sur le PROCESSEUR pour envoyer des données vers le GPU et de personnaliser la façon dont le GPU il dessine. C'est une grossière simplification, mais il semble que vous juste besoin d'une vue d'ensemble.
En fin de compte, chaque programme graphique doit passer par une API graphique. Lorsque vous dessinez une image, par exemple, vous envoyez le GPU de l'image, et le GPU dessine sur l'écran. Dessiner du texte? Envoyer les données vers le GPU. Le GPU il dessine. Rappelez-vous, votre code ne peut pas parler de l'écran. Il PEUT parler pour le GPU grâce à OpenGL ou Direct3D, et le GPU puis dessine les données.
OriginalL'auteur imallett