Le groupe Khronos annonce la sortie des spécifications d'OpenGL 3.2
Et de son langage de shaders GLSL 1.5

Le , par raptor70, Expert éminent
Le groupe Khronos annonce la sortie des spécification d'OpenGL 3.2

Aujourd'hui, lors du premier jour de la convention SIGGRAPH09, le groupe Khronos a annoncé la sortie des nouvelles spécifications de son API graphique 2D et 3D, OpenGL, dans sa version 3.2. Ils en ont également profité pour présenter les nouvelles spécifications de leur langage de shader GLSL 1.5.

On notera principalement qu'ils veulent simplifier et améliorer le portage d'application DirectX sous OpenGL. Mais également augmenter les performances des vertex array notamment pour les partages de ressources entre CPU et GPU ou avec le multithreading CPU. Ils ont également amélioré le pipeline programmable en incluant plus précisément les geometry shader. On trouvera également des améliorations sur la qualité visuelle des cube map.

Vous pourrez trouver l'intégralité des changements dans les nouvelles spécifications :


Que pensez vous de ces nouveautés ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de vintz72 vintz72 - Membre actif https://www.developpez.com
le 04/08/2009 à 9:56
Il faudrait surtout que rapidement les OS et les drivers suivent les specs pour espérer faire de l'ombre à Direct 3D (pour les jeux j'entends)
Avatar de stardeath stardeath - Membre expert https://www.developpez.com
le 04/08/2009 à 13:11
Citation Envoyé par vintz72  Voir le message
Il faudrait surtout que rapidement les OS et les drivers suivent les specs pour espérer faire de l'ombre à Direct 3D (pour les jeux j'entends)

sans direct3d, opengl ne serait pas à ce niveau aujourd'hui, rien qu'à lire le papier sur les specs pour se rendre compte de pas mal de ressemblance.

et qu'on aime ou pas microsoft il faut reconnaitre que l'équipe sur dx fait un travail assez monstrueux, les api dx 9 et 10 sont de très bonnes et dx 11 devrait continuer sur cette lancée.
Avatar de Bakura Bakura - Rédacteur https://www.developpez.com
le 04/08/2009 à 20:49
Je suis content de la direction dans laquelle va OpenGL, 3 releases en quoi... 1 an ? C'est assez énorme .

D'après ce que j'ai pu lire ci-et là, l'extension GL_ARB_sync semble sympa. Personnellement, j'aime bien : GL_ARB_Draw_elements_base_vertex.

Avant, lorsqu'on voulait par exemple dessiner un mesh composé de plusieurs sous-meshs, on pouvait par exemple avoir un vertex buffer global qui contenanit les vertices de tous les sous-meshs puis, pour chaque sous-mesh, un index buffer. Grâce à cette extension, on pourra étendre le concept et avoir un unique index buffer pour tous les sous-meshs, puis utiliser cette fonction pour faire un offset sur les indices. Ainsi si, pour dessiner le deuxième sous-mesh, on doit commencer à l'indice 100, on pourra le spécifier dans la fonction. Ca va diminuer encore le nombre de binding et simplifier pas mal .
Avatar de Syl_20 Syl_20 - Membre actif https://www.developpez.com
le 08/08/2009 à 18:13
Ce que j'aimerai, c'est qu'il y ai des variables uniforme globales à tous les shaders.
Parce qu'avec la disparition des variables type gl_LightSource[x].position par exemple avant quand la lumière bougeait, j'avais juste a faire un glLightfv(GL_LIGHT0,GL_POSITION,Position); et tous mes shaders avaient la nouvelle position de la lumière. Maintenant c'est galère il faut que je déclare manuellement la variable dans chaque shader, et si la lumiere bouge il faut que je renseigne manuellement chaque shader. Bref super galère
Sans parler de la gestion des matrices qui était totalement transparente avant

C'était mon coup de gueule contre LE gros point noir selon mois des nouveautés d'openGL 3.x
A moins qu'il y ait super technique qui m'est échappée
Avatar de oxyde356 oxyde356 - Membre éprouvé https://www.developpez.com
le 09/08/2009 à 4:44
Citation Envoyé par Bakura  Voir le message
Avant, lorsqu'on voulait par exemple dessiner un mesh composé de plusieurs sous-meshs, on pouvait par exemple avoir un vertex buffer global qui contenanit les vertices de tous les sous-meshs puis, pour chaque sous-mesh, un index buffer. Grâce à cette extension, on pourra étendre le concept et avoir un unique index buffer pour tous les sous-meshs, puis utiliser cette fonction pour faire un offset sur les indices. Ainsi si, pour dessiner le deuxième sous-mesh, on doit commencer à l'indice 100, on pourra le spécifier dans la fonction. Ca va diminuer encore le nombre de binding et simplifier pas mal .

Euh si j'ai bien compris ce que tu voulais dire et bien je dirais que on pouvait déjà avant
glDrawElements (et glDrawRangeElements) permettent de faire ça.
Pour mon dernier projet j'avais des objets (pouvant être des triangles, lignes et points, mais ça aurait aussi pu être des mesh et sous-mesh) contenant une liste de vertex et une liste d'index. Je stockais tout dans un VB et un IB et je gardais en mémoire l'offset des lignes et l'offset des points (les triangles avaient toujours l'offset 0) et je modifiais le derniers paramètre de glDrawElements en fonction de cette offset. C'est bien ça qui t'interresse non ?
Avatar de Bakura Bakura - Rédacteur https://www.developpez.com
le 09/08/2009 à 21:17
Alors alors...

oxyde > Effectivement glDrawRangeElements permet de faire la même chose, quoique avec un paramètre en plus. Je ne savais pas, il faudrait se renseigner sur ce qu'apporte la nouvelle extension alors...

Syl 20 > C'est effectivement un peu plus complexe, mais tu peux facilement retranscrire ce phénomène. Il y a un article sur Shader X5, que je te décris rapidement (avec les uniform buffer object, on peut faire des trucs encore plus sympas).

Sans entrer dans les détails de l'article, tu peux simuler ce ocmportement avec des "variables dynamiques" (par exemple la position d'une lampe). Tu aurais par exemple un "manager" qui associerait un nom de variable (par exemple "LightPosition" avec un pointeur de fonction (ça se fait assez facilement avec std::bind). Quand tu souhaites mettre à jour la variable, tu récupères dans le manager le pointeur de fonction associée au nom ("LightPosition", "WorldViewMatrix"...) et tu récupères la matrice, la position (avec les template tu peux faire un truc très modulaire). Bien sur ceci implqiue que tu ais a chaque fois une fonction GetLightPosition, GetWorldViewMatrix...

L'article décrit une technique un peu plus modulaire, si ça t'intéresse vraiment je peux te faire un petit résumé, j'avais fait ça une fois (le soucis,c 'est que j'ai pas réussi à bien interfacer ça avec les uniform buffer object).
Offres d'emploi IT
Création et développement d'une base de données textile sur access
Renault - Ile de France - Guyancourt (78280)
Technicien helpdesk h/f
Links IT SERVICES - Pays de la Loire - Nantes (44000)
Ingénieur test EWS H/F
ST Microelectronics - Provence Alpes Côte d'Azur - ROUSSET Proche Aix en Pce)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil