当前位置: 首页 > news >正文

世纪佳缘网站开发公司百度搜索智能精选

世纪佳缘网站开发公司,百度搜索智能精选,成都网站建设的公司哪家好,潍坊网站建设维护9.2 OpenGL调用窗口,方向键和鼠标 9.2.1 opengl调用窗口 OpenGL调用窗口步骤: 第一步:初始化 GLFW,初始化OpenGL,初始化窗口,初始化上下文 第二步:设置窗口大小和位置,设置输入输出 第三步…
9.2 OpenGL调用窗口,方向键和鼠标
9.2.1 opengl调用窗口

OpenGL调用窗口步骤:

第一步:初始化 GLFW,初始化OpenGL,初始化窗口,初始化上下文

第二步:设置窗口大小和位置,设置输入输出

第三步:循环渲染

第四步:终止

示例代码:

#include <glew.h>
#include <glfw3.h>
#include <iostream>void processInput(GLFWwindow* window)
{if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)glfwSetWindowShouldClose(window, true);
}int main()
{//第一步:初始化glfw,glfwInit();//初始化glfw//glfwWindowHint初始化glfw的版本glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//主版本glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//次版本glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//配置glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);//mac上使用//初始化窗口GLFWwindow* window = glfwCreateWindow(800, 600, "learnOpenGL", NULL, NULL);if (window == NULL){std::cout << "Failed to create GLFW window" << std::endl;glfwTerminate();return -1;}//初始化上下文glfwMakeContextCurrent(window); //将主线程设置为当前渲染环境//Init GLEWglewExperimental = true;if(glewInit() != GLEW_OK){printf("Init GLEW failed.");glfwTerminate();return -1;}//第二步:设置窗口大小和位置glViewport(0, 0, 800, 600);//前两个参数窗口左下角的位置。后两个渲染窗口的宽度和高度while (!glfwWindowShouldClose(window)){processInput(window); ///设置输入输出glClearColor(0.2f, 0.3f, 0.3f, 1.0f);//前面三个参数是RGB,后面一个参数是透明度glClear(GL_COLOR_BUFFER_BIT);glfwSwapBuffers(window);//函数在每次循环迭代开始时检查 GLFW 是否已被指示关闭glfwPollEvents();//函数检查是否触发了任何事件}glfwTerminate();//第四步:清理return 0;
}
9.2.2 opengl 调用方向键

调用方向键主要是考虑按键和移动速度,修改的办法是在上面调用窗口的设置函数processInput上进行修改;

void processInput(GLFWwindow *window)
{...const float cameraSpeed = 0.05f; // adjust accordinglyif (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS)//按下W键cameraPos += cameraSpeed * cameraFront;//cameraFront相机超向if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS)//按下S键cameraPos -= cameraSpeed * cameraFront;if (glfwGetKey(window, GLFW_KEY_A) == GLFW_PRESS)//按下A键cameraPos -= glm::normalize(glm::cross(cameraFront, cameraUp)) * cameraSpeed;if (glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS)//按下D键cameraPos += glm::normalize(glm::cross(cameraFront, cameraUp)) * cameraSpeed;
}
9.2.3 opengl调用鼠标

OpenGL 调用鼠标主要考虑鼠标的移动和缩放,主要是使用下面3个函数:

glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); //隐藏并捕获光标
void mouse_callback(GLFWwindow* window, double xpos, double ypos);//监听鼠标移动事件xpos和ypos代表当前鼠标位置
glfwSetCursorPosCallback(window, mouse_callback)

计算鼠标光标步骤:

  1. 计算鼠标自上一帧以来的偏移量。
  2. 将偏移值添加到相机的偏航和俯仰值中。
  3. 为最小/最大音高值添加一些约束。
  4. 计算方向向量。

代码:

void mouse_callback(GLFWwindow* window, double xpos, double ypos)
{if (firstMouse)// initially set to true,保证初次使用不会大幅度跳跃{lastX = xpos;lastY = ypos;firstMouse = false;}float xoffset = xpos - lastX;float yoffset = lastY - ypos; lastX = xpos;lastY = ypos;float sensitivity = 0.1f; //乘以灵敏度值,降低鼠标移动太剧烈xoffset *= sensitivity;yoffset *= sensitivity;yaw   += xoffset;//偏移值加入俯仰pitch += yoffset;//偏移值加入偏航if(pitch > 89.0f)///加入约束pitch = 89.0f;if(pitch < -89.0f)pitch = -89.0f;glm::vec3 direction;//计算实际方向向量direction.x = cos(glm::radians(yaw)) * cos(glm::radians(pitch));direction.y = sin(glm::radians(pitch));direction.z = sin(glm::radians(yaw)) * cos(glm::radians(pitch));cameraFront = glm::normalize(direction);
}  

(2)鼠标缩放

void scroll_callback(GLFWwindow* window, double xoffset, double yoffset)
{fov -= (float)yoffset;if (fov < 1.0f)fov = 1.0f;if (fov > 45.0f)fov = 45.0f; 
}projection = glm::perspective(glm::radians(fov), 800.0f / 600.0f, 0.1f, 100.0f);  
glfwSetScrollCallback(window, scroll_callback); 
http://www.hkea.cn/news/456872/

相关文章:

  • 做虚拟货币交易网站域名注册平台有哪些
  • 企业网站首页的实现专业的网页制作公司
  • 动态网站建设教程宝鸡seo排名
  • 做外贸b2b免费网站优化推广网站排名
  • 丹徒网站建设价格香港服务器
  • 宿迁哪里有做网站开发的信息流广告案例
  • 电脑网页无法访问如何解决北京seo地址
  • 直销网站系统制作价格java培训机构
  • dw软件个人简历网站怎么做百度导航下载2022最新版官网
  • 成都官方网站建设泉州seo外包
  • 矿山建设网站天津网络推广seo
  • 国内优秀的响应式网站深圳专业seo外包
  • 重庆装修价格c盘优化大师
  • 银行网站 设计方案外包优化网站
  • 做网站是学什么专业软件外包企业排名
  • wordpress商城 中文站百度站长平台网址
  • 建手机网站的软件有哪些南宁百度seo价格
  • 做网站私活长沙网络营销公司
  • 网站建设公司 广告法被处罚沧州网络推广外包公司
  • 电商网站 开发成本惠州seo外包服务
  • 佛山做网站建设价格百度网盘官方下载
  • 网上购物商城网站建设个人免费域名注册网站
  • 成都学网站建设电子营销主要做什么
  • 织梦cms通用蓝白简介大气企业网站环保科技公司源码网络推广员招聘
  • 网站后台怎么添加图片视频app推广
  • 网站秒收录怎么做的经典软文案例和扶贫农产品软文
  • 珠海疫情最新情况厦门搜索引擎优化
  • 中国菲律宾历史战绩网站关键词优化工具
  • 西宁网站建设最好的公司哪家好优秀网站设计案例
  • 沧州做网站费用搜索引擎优化是做什么的