J'utilise GLM et GLFW pour dessiner un carré. J'ai le code suivant:Vertex OpenGL LookAt ne montre pas
static const GLfloat g_vertex_buffer_data[] = {
// square
0, 0, 0,
1, 0, 0,
0, 0, 1,
1, 0, 0,
1, 0, 1,
0, 0, 1,
};
glm::mat4 Projection = glm::perspective(glm::radians(45.0f), (float)_width/(float)_height, 0.1f, 100.0f);
glm::mat4 View = glm::lookAt(glm::vec3(0.f, 5.f, 0.f), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0));
glm::mat4 Model = glm::mat4(1.0f);
glm::mat4 mvp = Projection * View * Model;
GLuint MatrixID = glGetUniformLocation(programID, "MVP");
glm::mat4 MyModel = glm::mat4(1.0f);
glm::mat4 MyMVP = Projection * View * MyModel;
La chose étrange est ici:
glm::mat4 View = glm::lookAt(glm::vec3(0.f, 5.f, 0.f), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0));
En ce moment, je ne vois rien. Mais quand je le change en:
glm::mat4 View = glm::lookAt(glm::vec3(0.f, 5.f, 0.000001f), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0));
Ensuite, je suis en mesure de voir le carré. Pourquoi ne suis-je pas capable de le voir quand je mets le Z coördinate à zéro, pourquoi ça marche quand je le change en quelque chose> 0? En fait, je veux que ce soit zéro (donc en regardant de 5 unités jusqu'au point central) mais cela ne fonctionne pas pour une raison quelconque.
--- --- modifier
est avec glm::vec3(0.f, 5.f, 0.0000000000001f)
Ceci est le résultat avec glm::vec3(0.f, 5.f, 0.000000000000f)
Votre vecteur haut doit être (0,0,1) et non (0,1,0). Actuellement, la direction de votre vue et le vecteur ascendant sont les mêmes, donc le produit croisé ne fonctionnera pas correctement. Lorsque vous passez à 0.001f, le vecteur ascendant peut être "approximé". – aslg
@aslg Ça a marché, mais qu'est-ce que ça veut dire quand je change de vecteur comme tu l'as dit? Qu'est-ce qui se passe réellement? J'ai fait une édition en passant – Markinson