openGL系列文章目录
文章目录
- openGL系列文章目录
- 前言
- 一、openGL键盘事件不响应
- 二、解决步骤
- 1.glfw库事件响应回调函数
- 错误原因
- 运行结果
- 源码下载
前言
Gouraud 着色也容易受到其他伪影影响。如果镜面高光整个范围都在模型中的一个三角
形内——即高光范围内一个模型顶点也没有——那么它可能不会被渲染出来。由于镜面反射
分量是依顶点计算的,因此,当模型所有顶点都没有镜面反射分量时,其光栅化后的像素
也不会有镜面反射光。
一、openGL键盘事件不响应
二、解决步骤
1.glfw库事件响应回调函数
glfwSetKeyCallback(window, key_press_callback);
void key_press_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
{
if ((key == GLFW_KEY_ESCAPE) && (action == GLFW_PRESS))
{
glfwSetWindowShouldClose(window, GL_TRUE);
}
if (action == GLFW_PRESS)
{
keys[key] == GLFW_TRUE; //这里一定一定不能写成“==“,否则 按键WSAD按键失效!!!!!!!
}
else if (action == GLFW_RELEASE)
{
keys[key] == GLFW_FALSE; //这里一定一定不能写成“==“,否则 按键WSAD按键失效!!!!!!!
}
}
修改
void key_press_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
{
if ((key == GLFW_KEY_ESCAPE) && (action == GLFW_PRESS))
{
glfwSetWindowShouldClose(window, GL_TRUE);
}
if (action == GLFW_PRESS)
{
keys[key] = GLFW_TRUE; //这里一定一定不能写成“==“,否则 按键WSAD按键失效!!!!!!!
}
else if (action == GLFW_RELEASE)
{
keys[key] = GLFW_FALSE; //这里一定一定不能写成“==“,否则 按键WSAD按键失效!!!!!!!
}
}
错误原因
把
keys[key] == GLFW_TRUE;
keys[key] = GLFW_FALSE;
改成
keys[key] = GLFW_TRUE;
keys[key] = GLFW_FALSE;