Opengl(二)——准备好窗口
2016-03-02 23:06
411 查看
正文
#define GLEW_STATIC //静态编译必须加 #include <GL/glew.h> #include <glfw3.h> #include <iostream> using namespace std; void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode) { if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) glfwSetWindowShouldClose(window, GL_TRUE); } //按键回调函数 int main() { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); //确定opengl版本 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); GLFWwindow* window = glfwCreateWindow(800, 600, "NB", nullptr, nullptr); //获取窗口指针 if (window == nullptr) { std::cout << "Failed to create GLFW window" << std::endl; glfwTerminate(); return -1; } glfwMakeContextCurrent(window); glewExperimental = GL_TRUE; GLenum err = glewInit(); if (GLEW_OK!=err) { cout << "Failed to initialize GLEW" << endl; } glViewport(0, 0, 800, 600); //设置视口大小 glfwSetKeyCallback(window, key_callback); //注册 while (!glfwWindowShouldClose(window)) //游戏主循环 { glfwPollEvents(); // 检查事件 glfwSwapBuffers(window); //切换缓冲帧 glClearColor(0.2f, 0.3f, 0.3f, 1); glClear(GL_COLOR_BUFFER_BIT); //清除 } glfwTerminate(); //释放资源 return 0; }
glfw是一个工具包,用来简化一些操作,在这里可以很轻松的创建一个窗口。
glew, 由于opengl具有扩展特性,所以不同的显卡驱动会在实现公共opengl规范的同时,加上自己的一些拓展功能,而glew的作用是在运行之后根据当前驱动环境获取所有函数指针,原因是由于驱动版本众多,大多函数在运行之前是未确定的,所以glew会把函数指针都收集起来以便使用,当然,这就需要glew的版本足够新,从而能够囊括所有函数。
相关文章推荐
- Linux内核分析【1】--分析汇编代码
- openfire客户端文件传输学习笔记(一)
- 学习linux决心书
- nginx负载均衡
- Apache shiro 笔记整理之自定义Realm
- Tomcat 6 绑定域名和根域名
- Educational Codeforces Round 9 E. Thief in a Shop dp fft
- linux挂载空磁盘步骤
- Hive de 功能架构
- Linux系统运维——文件查找——2
- nginx如何查看版本号和编译参数
- Apache2.4配置
- web请求状态码
- Docker - How to create a custom database from docker mysql image
- 关于linux上使用vi时,方向键出现ABCD的个人总结
- 嵌入式笔试题(linux基础)
- hive修改分区表
- 常用的linux命令
- Shell字符操作命令——grep、sed、awk
- NetBeans下Tomcat无法查看web应用运行,报错:部署错误