2017-07-11 2 views
-1

J'ai reçu une application OpenGL écrite par une autre équipe et j'ai eu du mal à la faire fonctionner pendant près d'une semaine maintenant. Mon installation a un profil de base de 3.3 (GLSL 3.3, Mesa 11.2) et un profil de compatibilité de 3.0 (GLSL 1.3, Mesa 11.2). J'ai essayé d'exécuter des applications de test en utilisant le profil de base de mon installation et j'ai réussi. Cependant, je sais pertinemment que cette application utilise le profil de compatibilité 3.0 (utilise les fonctions ARB dans glext.h) mais continue à lancer des erreurs INVALID_OPERATION (1282) lorsque des fonctions comme glUseProgramObjectARB, glActiveTextureARB, glUniform1iARB sont exécutées.Utilisation du profil de compatibilité OpenGL avec Intel HD GPU + Mesa

Toute aide pour résoudre ce problème est très appréciée.

+1

Donc, vous définissez un profil de compatibilité, à droite. Mais voulez utiliser certaines fonctions de glxxxARB. La première étape consiste à déterminer si ces fonctions ARB sont prises en charge par votre GPU. 'glxinfo' vous donne des informations utiles. – Ripi2

+0

Est-ce que Mesa prétend réellement soutenir ['ARB_shader_objects'] (https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader_objects.txt) dans les deux contextes? – genpfault

+2

Il n'existe pas de «profil de compatibilité 3.0» et mesa ne prend pas en charge les profils de compatibilité. – derhass

Répondre

1

et le profil de compatibilité 3.0 (GLSL 1.3, Mesa 11,2)

Certainement pas. La prise en charge des profils de compatibilité est facultative. Jusqu'à présent, seuls les pilotes propriétaires de NVidia et d'AMD les supportent. Toutes les autres implémentations OpenGL ne le font pas.

Cependant, je sais pertinemment que cette application utilise le profil de compatibilité 3.0 (utilise les fonctions ARB dans le glext.h)

Ce sont probablement pas fonctions de profil de compatibilité. Plus probablement, ces termes sont utilisés avec un contexte OpenGL-2.1. En fait, beaucoup d'OpenGL-3 avant l'introduction des profils de base se comportent plus ou moins comme des extensions 2.1 + (bien que l'utilisation de glUseProgramObjectARB ne corresponde pas à ce modèle).

Ma suggestion: Essayez de sortir de ce cadre qui sont des programmes visant à des profils de compatibilité; c'est trop de dettes techniques à long terme. Si vous devez absolument prendre en charge les versions antérieures (c'est-à-dire 2.1, qui est pris en charge pratiquement partout maintenant), couvrez cela par un chemin de code différent.