openGL 学习总结(二)
来源:互联网 发布:女子篮球鞋 知乎 编辑:程序博客网 时间:2024/05/14 02:48
openGL 学习总结(二)
OpenGL 本身是一个大状态机,定义了一系列告诉 OpenGL 该如何操作的变量。
GLFW 是一个C写的专门用于OpenGL开发的库,它提供了把物体渲染大屏幕所需的必要功能,使窗口合理地展示,为渲染做好准备。
使用GLFW创建一个窗口:
#define GLEW_STATIC#include <GL\glew.h>#include <GLFW\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); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3); glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_RESIZABLE,GL_FALSE); GLFWwindow *window = glfwCreateWindow(800,600,"test01",nullptr,nullptr); if(window == nullptr){ cout<<"Failed to create GLFW window"<<endl; glfwTerminate(); return -1; } glfwMakeContextCurrent(window); glewExperimental = GL_TRUE; if(glewInit() != GLEW_OK){ cout<<"Failed to initialize GLEW"<<endl; return -1; } glViewport(0,0,800,600); while(!glfwWindowShouldClose(window)){ glfwPollEvents(); glClearColor(0.2f,0.3f,0.3f,1.0f); glClear(GL_COLOR_BUFFER_BIT); glfwSwapBuffers(window); } glfwSetKeyCallback(window,key_callback); glfwTerminate(); return 0;}
glfwInit():用于初始化OpenGL库;
glfwWindowHint():用于配置OpenGL;
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); //用于设置主版本号 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//用于设置次版本号 glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//使用core-profile,在调用一个OpenGL的遗留函数时会产生invalid operation 错误,当意外的使用了不该使用的旧函数时是一个很好的提醒; glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);//用于设置窗口大小不可变
glfwCreateWindow() 用于创建一个窗口,前两个参数为窗口的宽度和高度,第三个参数是窗口的名字,最后两个参数可以忽略;
glfwMakeContextCurrent():用于告诉GLFW去创建窗口的环境,这个环境是当前线程的主环境;
GLEW用于管理OpenGL的函数指针,在调用任何OpenGL函数之前初始化GLEW;
glViewport():用于告诉OpenGL渲染窗口的大小,前两个参数设置渲染窗口的起始位置,后两个参数是渲染窗口的宽度和高度。
glfwWindowShouldClose():用于从开始检验每一次循环迭代中glfw是否已经得到关闭指示,如果返回true,则可以关闭窗口;
glfwPollEvente():用于检验是否有任何事件被处罚,接着调用相应函数;
glfwSwapBuffers():交换颜色缓冲;
glfwTerminate():用于合理地清理/释放之前分配的所有资源,并退出应用;
key_callback():在与客户键盘交互的时候被调用的回调函数,回调函数是一个可以在GLFW中设置的,在合适的时机被调用的函数指针,
glClearColor():用于清理屏幕;
glClear():用于清理屏幕的颜色缓冲;
最终效果:
- OpenGL学习总结(二)
- openGL 学习总结(二)
- 学习OpenGL总结二
- opengl学习(二)
- OpenGL 学习(二)
- openGL学习(二)
- OpenGL学习笔记(二)
- OpenGL学习笔记(二)
- OpenGL入门学习(二)
- OpenGL入门学习(二)
- OpenGL学习笔记(二)
- OpenGL入门学习(二)
- opengl入门学习(二)
- OpenGL入门学习(二)
- opengl学习笔记(二)
- OpenGL入门学习(二)
- OpenGL学习笔记(二)
- OpenGL学习笔记(二)
- LeetCode | 520. Detect Capital
- 时辰和属相、当令经的对应关系
- kptr_restrict 向用户空间内核中的指针(/proc/kallsyms-modules显示value全部为0)
- 侧拉加无限轮播
- 是否为同一棵二叉搜索树
- openGL 学习总结(二)
- Tablayout+Viewpager
- JAVA中的面板组件JPanel的应用
- XListView-View页面Copy的代码
- Hibernate入门到精通-关系映射一对多
- phaser教程一
- 用户添加,删除
- 轮播
- drools多一点