Я пытаюсь создать сцену «камеры для ходьбы» в комнате.Настройка просмотра камеры после перевода и вращения
На данный момент я не вижу ничего, не говоря уже о переводе и переводе, и я не могу понять, почему.
Пожалуйста, обратите внимание, что, прежде чем я использовал взгляд на функции, я мог видеть все, как я должен,
Но перевод и вращение были неправы, так как я всегда перемещается в соответствии с заданной оси,
И а не ось камеры, как я должен.
Это мой код сейчас:
Перспективное и смотреть -
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);
Любая идея о том, как определить камеру по мере необходимости и использовать перевод и вращение идти с камерой?