创建空窗口:

  1. #include<iostream>
  2. // GLEW
  3. #define GLEW_STATIC
  4. #include <GL/glew.h>
  5. // GLFW
  6. #include <glfw3.h>
  7.  
  8. //set key_callback
  9. void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode);
  10. void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
  11. {
  12. // When a user presses the escape key, we set the WindowShouldClose property to true,
  13. // closing the application
  14. if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
  15. glfwSetWindowShouldClose(window, GL_TRUE);
  16. }
  17.  
  18. int main()
  19. {
  20. //instantiate the GLFW window
  21. glfwInit();
  22. glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, );
  23. glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, );//3为版本号
  24. glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
  25. glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);//设置为GL_TRUE就可以调整窗口大小
  26.  
  27. //initial GLFW window
  28. GLFWwindow* window = glfwCreateWindow(, , "LLapuras", nullptr, nullptr);
  29. if (window == nullptr)
  30. {
  31. std::cout << "Failed to create GLFW window" << std::endl;
  32. glfwTerminate();
  33. return -;
  34. }
  35. //通知GLFW将window的上下文设置为当前线程的主上下文
  36. glfwMakeContextCurrent(window);
  37.  
  38. //initial GLEW
  39. //GLEW用来管理OpenGL的函数指针,在调用任何OpenGL的函数之要先初始化GLEW
  40.  
  41. //设置glewExperimental为TRUE可以让GLEW在管理OpenGL的函数指针时更多地使用现代化的技术,
  42. //如果把它设置为GL_FALSE的话可能会在使用OpenGL的核心模式时出现一些问题。
  43. glewExperimental = GL_TRUE;
  44. if (glewInit() != GLEW_OK)
  45. {
  46. std::cout << "Failed to initialize GLEW" << std::endl;
  47. return -;
  48. }
  49.  
  50. //viewpoint
  51. //告诉opengl需要渲染窗口的尺寸
  52. int width, height;
  53.  
  54. //获取窗口的width和height in pixels,要以屏幕坐标衡量用glfwGetWindowSize()
  55. glfwGetFramebufferSize(window, &width, &height);
  56.  
  57. //OpenGL坐标范围为(-1,1),需要映射为屏幕坐标,
  58. //OpenGL幕后使用glViewport中定义的位置和宽高进行2D坐标的转换
  59. glViewport(, , width, height);
  60.  
  61. //这句去掉也没事??是个输入回馈函数
  62. glfwSetKeyCallback(window, key_callback);
  63.  
  64. // Program loop
  65. //在退出前保持循环
  66. while (!glfwWindowShouldClose(window))
  67. {
  68. // Check and call events
  69. glfwPollEvents();
  70.  
  71. // Rendering commands here
  72. glClearColor(0.9f, 0.3f, 0.3f, 1.0f);
  73. glClear(GL_COLOR_BUFFER_BIT);
  74.  
  75. // Swap the buffers
  76. glfwSwapBuffers(window);
  77. }
  78.  
  79. //释放GLFW分配的内存
  80. glfwTerminate();
  81. return ;
  82. }

运行:

【OpenGL】代码记录01创建窗口的更多相关文章

  1. 基于OpenGL编写一个简易的2D渲染框架-01 创建窗口

    最近正在学习OpenGL,我认为学习的最快方法就是做一个小项目了. 如果对OpenGL感兴趣的话,这里推荐一个很好的学习网站 https://learnopengl-cn.github.io/ 我用的 ...

  2. OpenGL学习(1)——创建窗口

    这是我的第一篇博客,试着记录学习OpenGL的过程.使用的教程:LearnOpenGL,系统:Deepin 15.9.3,IDE:Qt Creator. 添加头文件 创建窗口用到两个库:GLFW和GL ...

  3. Nehe OpenGL教程第一课-创建一个OpenGL窗口(Win32)

       原文英文地址为:Creating an OpenGL Window (Win32),翻译的chm中文格式文档下载地址为:OpenGL教程电子书(chm格式)中文版,源代码在官网上也可以下载到,每 ...

  4. OpenGL教程(2)——第一个窗口

    OpenGL环境终于配置好了,现在我们可以开始学习OpenGL了. 首先,创建一个.cpp文件,然后打上几行#include指令: #include <iostream> using st ...

  5. OpenCV学习代码记录—— Snake轮廓

    很久之前学习过一段时间的OpenCV,当时没有做什么笔记,但是代码都还在,这里把它贴出来做个记录. 代码放在码云上,地址在这里https://gitee.com/solym/OpenCVTest/tr ...

  6. OpenGL 学习笔记 01 环境配置

    以下教程仅适用于Mac下的Xcode编程环境!其他的我也不会搞. 推荐教程:opengl-tutorial  本项目Github网址       OpenGL太可怕了...必需得把学的记下来,不然绝壁 ...

  7. QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数

    QT源码解析(一) QT创建窗口程序.消息循环和WinMain函数 分类: QT2009-10-28 13:33 17695人阅读 评论(13) 收藏 举报 qtapplicationwindowse ...

  8. 【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布

    内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做 ...

  9. Civil 3D 二次开发 创建Civil 3D 对象—— 01 —— 创建几何空间点

    这一小节,我们创建派生于CivilCreateEntityDemo的类CivilCreateCogoPoint,来创建几何空间点. 1 创建类并添加字段及方法 首先在项目资源管理器中向本项目中添加类, ...

随机推荐

  1. 应用wavesurfer.js绘制音频波形图小白极速上手总结

    一.简介 1.1  引   人生中第一份工作公司有语音识别业务,需要做一个web网页来整合语音引擎的标注结果和错误率等参数,并提供人工比对的语音标注功能(功能类似于TranscriberAG等),(博 ...

  2. idea 右键无java class选项

    项目中新建module之后,要在该目录下新增java Class文件,右键——>New发现无Java Class选项. File –Project Structure或者ctrl+alt+shi ...

  3. 三十六、fetch

    https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API

  4. 团队开发项目--NABCD模型

    N(need)需求: 鉴于在学校中的大部分爱学习的学生平时都去拍空教室的占有情况,我们发现有的时候太多,导致同学们们拍照会浪费很长的时间,而且空教室的显示不是一下子全出来,有的时候还会出现无法显示的情 ...

  5. C#之事件与eventArgs

    static void Main(string[] args)         {             MyText myText = new MyText();             myTe ...

  6. 微信小程序-表单笔记

    发布页——向云端数据库上传多行文字和4张图片 第6,8行注释掉和不注释掉都可以实现数据上传 var _this = this; wx.cloud.callFunction({ name: 'searc ...

  7. 播放包含flash内容的网页或flash内容, 无法显示相应flash内容

    问题描述 通过Messenger发布的html5网页到player, 如下图所示: 布局播放效果: 解决办法 从Cnario Player菜单栏打开Setting>>Canvas Cont ...

  8. 第一章 初识 MyBatis

    概念:优秀持久层框架:实体类和SQL语句之间建立映射关系 与hibernate区别    :自动生成sql语句,并且建立实体类和数据表的映射. MyBatis基本要素:核心对象   核心配置文件  S ...

  9. mysql 在线加索引 锁表

    mysql在线修改表结构大数据表的风险与解决办法归纳 - 王滔 - 博客园 http://www.cnblogs.com/wangtao_20/p/3504395.html MySQL 加索引 加字段 ...

  10. docker 容器的启动方式

    1.Docker 优势: .更高效利用系统资源:由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高.无论是应用执行速度.内存损耗或者文件存储速度,都要比传统 ...