2
我試圖在一個房間中製作一個「步行攝像機」的場景。在平移和旋轉之後調整攝像機視圖
現在,我不能看到任何東西,更不用說旋轉和翻譯,我不知道爲什麼。
請注意,之前我用的看功能,我可以看到所有喜歡我應該
但是平移和旋轉是錯誤的,因爲我根據定義的軸總是感動,
而且不是像我應該的相機軸。
這是我的代碼現在:
的角度和看 -
mat4 Projection = perspective(45.0f, 1.0f, 0.1f, 100.0f);
vec3 pos = vec3(0.0f, 0.0f, 0.0f);
vec3 target = vec3(0.0f, 0.0f, -99.0f);
vec3 up = vec3(0.0f, 1.0f, 0.0f);
wvp *= Projection;
wvp = lookAt(pos, target, up);
平移和旋轉按下幾個鍵後:
glfwSwapBuffers();
if(glfwGetKey('W'))
{
wvp = translate(wvp, vec3(0,0,0.01));
}
if(glfwGetKey('S'))
{
wvp = translate(wvp, vec3(0,0,-0.01));
}
if(glfwGetKey('A'))
{
wvp = rotate(wvp,-1.0f, vec3(0.0f, 1.0f, 0.0f));
}
if(glfwGetKey('D'))
{
wvp = rotate(wvp,1.0f, vec3(0.0f, 1.0f, 0.0f));
}
現在的定義的頂點:
static const GLfloat vertices[] = {
//Given square
0.0f, 0.0f, 2.0f,
1.0f, 0.0f, 2.0f,
0.0f, 1.0f, 2.0f,
1.0f, 1.0f, 2.0f,
}
的,爲什麼我將它們連接起來:
static const GLubyte indices[] = {
0,1,3,
0,2,3,
}
一些緩衝:
GLuint vertexbuffer;
glGenBuffers(1, &vertexbuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
GLuint indexbuffer;
glGenBuffers(1, &indexbuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexbuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
上需要如何定義相機和使用平移和旋轉去與相機的任何想法?