问题描述
我的相机有些问题。我的程序只是采用一个顶点数组来绘制一个多维数据集,并使用glm::vec3
数组进行翻译。这个想法是在不同位置生成一堆立方体。
这是渲染循环:
while (!glfwWindowShouldClose(window))
{
processInput(window);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
myShader.use();
float time = glfwGetTime();
deltaTime = time - lastFrame;//PROBLEM HERE!
lastFrame = time;//PROBLEM HERE!
//set the camera
glm::mat4 view = glm::mat4(1.0f);
view = glm::lookAt(cameraPos,cameraFront + cameraPos,cameraUp);
// retrieve the matrix uniform locations
unsigned int modelLoc = glGetUniformLocation(myShader.ID,"model");
unsigned int viewLoc = glGetUniformLocation(myShader.ID,"view");
myShader.setMat4("projection",projection);
myShader.setMat4("view",view);
for(int i = 0; i < sizeof(cubePositions); i++){
//draw every cube
glm::mat4 model = glm::mat4(1.0f);
model = glm::translate(model,cubePositions[i]);
myShader.setMat4("model",model);
glDrawArrays(GL_TRIANGLES,36);
}
// -------------------------------------------------------------------------------
glfwSwapBuffers(window);
glfwPollEvents();
}
目前,原点中仅设置了一个多维数据集。在本教程之后,我添加了一个Deltatime
,如您所见,它尚未在我的运动相机功能中实现。但是当我只在自己的主体中编写关于Deltatime
和lastFrame
的两行代码并在画布中进行编译时,在第一个立方体上方出现了第二个立方体,该立方体向上移动而没有任何输入。
void processInput(GLFWwindow *window)
{
if(glfwGetKey(window,GLFW_KEY_ESCAPE) == GLFW_PRESS)
glfwSetWindowShouldClose(window,true);
//camera movement
const float cameraSpeed = 1.0f ;
if (glfwGetKey(window,GLFW_KEY_W) == GLFW_PRESS)
cameraPos += cameraSpeed * cameraFront;
if (glfwGetKey(window,GLFW_KEY_S) == GLFW_PRESS)
cameraPos -= cameraSpeed * cameraFront;
if (glfwGetKey(window,GLFW_KEY_A) == GLFW_PRESS)
cameraPos -= glm::normalize(glm::cross(cameraFront,cameraUp)) * cameraSpeed;
if (glfwGetKey(window,GLFW_KEY_D) == GLFW_PRESS)
cameraPos += glm::normalize(glm::cross(cameraFront,cameraUp)) * cameraSpeed;
}
程序全局变量的声明:
glm::vec3 cameraPos = glm::vec3(0.0f,0.0f,15.0f);
const glm::vec3 cameraFront = glm::vec3(0.0f,-1.0f);
const glm::vec3 cameraUp = glm::vec3(0.0f,1.0f,0.0f);
// timing
float deltaTime = 0.0f; // time between current frame and last frame
float lastFrame = 0.0f;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)