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():用于清理屏幕的颜色缓冲;
  最终效果:
  这里写图片描述

原创粉丝点击