OPENGL学习笔记之三
来源:互联网 发布:web数据挖掘第二版pdf 编辑:程序博客网 时间:2024/06/15 13:04
OPENGL学习笔记之三
2017/9/20
阅读材料来自learnopengl.com以及learnopengl-cn.github.io
1.要在GLFW的头文件之前引用GLAD的头文件。因为GLAD的头文件引用了OpenGL头文件(例如GL/gl.h)。
如下所示:
#include <glad/glad.h>#include <GLFW/glfw3.h>
int main()//主函数{ glfwInit();//初始化GLFW,接下来都是对其配置 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);配置GLFW,第一个参数代表选项的名称,是以GLFW_开头的枚举值;第二个参数接受一个整数,用来设置这个选项的值 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);// //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);Mac OS X使用该行 return 0;}//glfw开头参数详见http://www.glfw.org/docs/latest/window.html#window_hints
//窗口初始化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);
2.GLAD用来管理OpenGL函数指针
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)){ std::cout << "Failed to initialize GLAD" << std::endl; return -1;}
3.视口(Viewport)
注意区分OpenGL的位置坐标和屏幕视口里的坐标
glViewport(0, 0, 800, 600);//前两个参数为窗口左下角位置,第三个和第四个参数控制渲染窗口的宽度和高度(像素)//回调函数用来反映窗口改变时的的视口变化大小void framebuffer_size_callback(GLFWwindow* window, int width, int height);//回调函数原型void framebuffer_size_callback(GLFWwindow* window, int width, int height){ glViewport(0, 0, width, height);}glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);//将函数注册//后两个参数为宽和高的像素
4.渲染循环(Render Loop)
为了程序在我们主动关闭它之前不断绘制图像并能够接受用户输入,我们使用循环来使程序保持运行
while(!glfwWindowShouldClose(window))//返回值为true和false检查glfw是否被要求退出{ glfwSwapBuffers(window);//交换颜色缓冲(它是一个储存着GLFW窗口每一个像素颜色值的大缓冲),它在这一迭代中被用来绘制,并且将会作为输出显示在屏幕上 glfwPollEvents();//检查触发事件、更新窗口状态,调用对应的回调函数(可以通过回调方法手动设置)。}
5.释放资源
当渲染循环结束后我们需要正确释放/删除之前的分配的所有资源
glfwTerminate();return 0;
源代码分析请戳这里
6.输入
通过使用GLFW的几个输入函数在GLFW中实现一些输入控制,例如下面的glfwGetKey函数
void processInput(GLFWwindow *window){ if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) glfwSetWindowShouldClose(window, true);//把WindowShouldClose属性设置为 true的方法关闭GLFW}
然后在每一次循环之中执行processInput函数即可
7.渲染(Rendering)
调用glClear函数来清空屏幕的颜色缓冲,它接受一个缓冲位(Buffer Bit)来指定要清空的缓冲,可能的缓冲位有GL_COLOR_BUFFER_BIT,GL_DEPTH_BUFFER_BIT和GL_STENCIL_BUFFER_BIT。
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);//设置清空屏幕所用的颜色,当调用glClear函数,清除颜色缓冲之后,整个颜色缓冲都会被填充为glClearColor里所设置的颜色glClear(GL_COLOR_BUFFER_BIT);//清空屏幕的颜色缓冲
源代码分析请戳这里
阅读全文
0 0
- OPENGL学习笔记之三
- OpenGL ES学习笔记之三
- OpenGL学习笔记(三)
- openGL画线---openGL学习笔记(三)
- OpenGL学习笔记(三)
- OpenGL学习笔记(三)
- OPENGL学习笔记(三)
- OpenGL学习笔记(三)
- opengl学习之三:OpenGL基本功能
- OpenGL学习笔记之配置OpenGL
- OpenGL学习笔记之了解OpenGL
- OpenGL学习笔记之Buffers
- Opengl学习笔记之Textures
- OPENGL学习笔记之二
- OPENGL学习笔记之四
- OPENGL学习笔记之五
- OPENGL学习笔记之六
- OPENGL学习笔记之七
- HDU 6138 Fleet of the Eternal Throne AC自动机
- Idea导入项目及部署至Tomcat(从Eclipse到Idea的华丽转身)
- 关于jedis异常:Could not get a resource from the pool
- Thinkphp5 出现错误 require mongodb > 1.0
- DrawerLayout侧滑栏
- OPENGL学习笔记之三
- 关于V4L2编程中获取视频流的误区
- hdu4460-最短路&思维- Friend Chains
- 案例|FEC筷云经典案例“西洋街”,澳门最大跨境电商平台
- Object Detection--RCNN,SPPNet,Fast RCNN,FasterRCNN论文详解
- [JAVA] Hibernate 继承映射
- python虚拟环境的安装与配置
- spring 技术内幕读后感2---设计理念与整体架构
- NodeMcu关于UART的理解