我正在使用GLM和GLFW繪製一個正方形。我有以下代碼:Vertex OpenGL LookAt沒有顯示
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;
奇怪的是在這裏:
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 View = glm::lookAt(glm::vec3(0.f, 5.f, 0.000001f), glm::vec3(0, 0, 0), glm::vec3(0, 1, 0));
然後我居然能看到廣場。 當我將Zcoördinate更改爲零時,爲什麼我無法看到它?爲什麼當它將其更改爲大於0的值時它會工作?我實際上希望它爲零(所以從5個單位直到中心點),但由於某種原因不起作用。
---編輯---
這是glm::vec3(0.f, 5.f, 0.0000000000001f)
這是glm::vec3(0.f, 5.f, 0.000000000000f)
你的向上應該是(0,0,1)而不是(0,1,0)。目前您的觀看方向和向量是相同的,所以跨產品將無法正常工作。當您更改爲0.001f時,向上矢量可以「近似」。 – aslg
@aslg那有用,但是當我像你說的那樣改變向上的東西時它意味着什麼?究竟發生了什麼?我做了一個編輯 – Markinson