Impossible de déployer GLFW 3.2

Donc, celui-ci est un doozie;
J’ai une assez grosse solution OpenGL, écrite dans la version 3.2 core avec GLSL 1.5 dans Windows 7. J’utilise GLEW et GLM comme bibliothèques d’aide. Lorsque je crée une fenêtre, j’utilise les lignes suivantes:

// Initialize main window glewExperimental = GL_TRUE; glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); // Use OpenGL Core v3.2 glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2); glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); if(!glfwOpenWindow(Game::WINDOW_X, Game::WINDOW_Y, 0, 0, 0, 0, 32, 0, GLFW_WINDOW)) { ... 

Si j’omets les trois fonctions glfwOpenWindowHint, l’application bloque mes pilotes vidéo lors de l’appel à glDrawArrays (GL_TRIANGLES, 0, m_numIndices);

Mais voici le kicker. Lorsqu’un membre de mon groupe tente de mettre à jour et d’exécuter la solution, il obtient une fenêtre vierge sans géomésortinge. En commentant les trois lignes, le programme fonctionne correctement pour elles. Il y a une belle séparation entre travailler avec l’indice 3.2core et sans. Je n’ai pas été en mesure de déterminer la différence entre nVidia, AMD, un ordinateur de bureau ou un ordinateur portable.

Le mieux que j’ai pu trouver était de suggérer d’append glewExperimental = GL_TRUE; comme on dit que Glew a des problèmes avec le kernel. Cela n’a fait aucune différence. La solution est trop lourde pour publier du code, mais je peux mettre en place des shaders, un code de rendu, etc. au besoin.

Merci beaucoup! Cela nous tue depuis plusieurs jours maintenant.

Essayez de demander une fenêtre GLFW compatible en aval:

GLFW_OPENGL_FORWARD_COMPAT – Spécifiez si les contextes OpenGL doivent être compatibles avec les versions ultérieures (c’est-à-dire, interdire les fonctionnalités héritées). Cela ne devrait être utilisé que pour demander OpenGL version 3.0 ou supérieure.

Et essayez de ne pas définir l’indicateur de profil et laissez le système choisir:

 // Use OpenGL Core v3.2 glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2); glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); 

Assurez-vous également d’obtenir la version que vous souhaitez:

 int major, minor, rev; glfwGetGLVersion(&major, &minor, &rev); fprintf(stderr, "OpenGL version recieved: %d.%d.%d", major, minor, rev); 

Vous ne savez pas si vous utilisez également un Mac, mais lisez quand même ceci:

A.4 OpenGL 3.0+ sur Mac OS X

La prise en charge d’OpenGL 3.0 et versions ultérieures a été introduite avec Mac OS X 10.7. Même dans ce cas, les contextes de profil de base OpenGL 3.2 compatibles avec la compatibilité en aval sont pris en charge et il n’existe aucun mécanisme permettant de demander des contextes de débogage. Les versions antérieures de Mac OS X prennent en charge au maximum OpenGL version 2.1.

Pour cette raison, sur Mac OS X, les indices GLFW_OPENGL

En outre, sur Mac OS X 10.6 et versions antérieures, les astuces GLFW_OPENGL_VERSION_MAJOR et GLFW_OPENGL_VERSION_MINOR seront supprimées. .

J’ai rencontré le même problème. Je devais créer un VAO avant mon VBO et cela fonctionne maintenant sous OS X.

 GLuint vertex_array; glGenVertexArrays(1, &vertex_array); glBindVertexArray(vertex_array);