2015-09-22 1 views
0

J'ai remarqué que je ne pouvais pas changer la taille des points dans le vertex shader avec gl_PointSize dans mon application Android OpenGL ES 3.0. Finalement, j'ai découvert que je devais activer GL_PROGRAM_POINT_SIZE même si cette valeur enum n'est pas définie dans le fichier d'en-tête gl. J'ai donc fini par ajouter glEnable (0x8642);gl_PointSize ne fonctionne pas correctement sur Nvidia Shield

Tout fonctionne bien maintenant, mais est-ce un bug? Ou y a-t-il une raison pour laquelle je dois activer cela? Je sais que je dois faire cela sur un contexte de compatibilité sous Windows, mais je pensais sur Android que je travaillerais avec un contexte ES 3.0 pur. Peut-être que mon contexte GL n'était pas configuré correctement?

Répondre

1

Cela ressemble à un bug. Le mode qui est activé avec GL_PROGRAM_POINT_SIZE en OpenGL complet (et qui est désactivé par défaut) est toujours actif dans OpenGL ES et ne peut pas être désactivé.

Je crois que certains des nouveaux périphériques Shield supportent également OpenGL complet. Je suspecte que le pilote sous-jacent est partagé, et le paramètre pour cet état n'est pas ajusté lorsqu'il exécute l'API ES.

+0

Merci pour votre commentaire! Donc hier j'ai pu tester mon application sur un autre appareil (HTC M8) et j'avais une erreur qui impliquait que je n'avais pas de contexte GLES 3. J'ai donc vérifié mon code et l'ai comparé avec un exemple de code, et il s'est avéré que je créais mon contexte sans fournir la liste d'attributs pour spécifier que je voulais un contexte ES3. J'ai donc pensé que le bouclier se référait simplement à un contexte ES3, mais après avoir lu votre commentaire, il est logique que le bouclier ait une implémentation OpenGL complète et par défaut. Merci pour l'aide! – Martin

+0

Et en passant, je l'ai testé à nouveau avec le glEnable (GL_PROGRAM_POINT_SIZE) enlevé, et maintenant les particules ont la taille correcte. – Martin