LearnOpenGL学习(一)

实例化GLFW
(GLFW是一个轻量级的,开源的,跨平台的library,逐渐代替了GLUT)

 glfwInit();
 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
 glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

创建一个窗口对象 参数为宽,长,名字

GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
 if (window == NULL)
 {
  std::cout << "Failed to create GLFW window" << std::endl;
  glfwTerminate();
  return -1;
 }

GLAD是用来管理OpenGL函数的指针的(LearnOpenGL)
查阅资料https://blog.csdn.net/zjz520yy/article/details/83000096
GLAD使用步骤:GLAD可以使OpenGL基础渲染变得十分简单,只需要简单四个步骤就可以完成基础渲染。流程如下:
1.初始化GLAD库,加载所有OpenGL函数指针。(如下代码)
2.创建着色器并附加到着色器程序。
3.构建缓冲对象并附加到顶点属性。
4.使用着色器程序,利用渲染接口将缓冲对象按照指定图元类型渲染出来。

if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
    std::cout << "Failed to initialize GLAD" << std::endl;
    return -1;
}

创建(改变)视口函数,每次发生改变时候调用


void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    glViewport(0, 0, width, height);
}

注册这个函数,告诉GLFW每次窗口大小调整时候要调用
更多资料https://blog.csdn.net/Treeman5433716/article/details/80609119

glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

渲染循环函数
glfwSwapBuffers函数会交换颜色缓冲(它是一个储存着GLFW窗口每一个像素颜色值的大缓冲),它在这一迭代中被用来绘制,并且将会作为输出显示在屏幕上。

while(!glfwWindowShouldClose(window))
{
    glfwSwapBuffers(window);
    glfwPollEvents();    
}

当渲染循环结束后我们需要正确释放/删除之前的分配的所有资源。我们可以在main函数的最后调用glfwTerminate函数来完成。
(main函数的最后嗷)

glfwTerminate();
return 0;

在渲染循环中可以添加一些用户输入去搞事情

void processInput(GLFWwindow *window)
{
    if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
        glfwSetWindowShouldClose(window, true);
}

每次循环的时候需要清空界面。

glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);

猜你喜欢

转载自blog.csdn.net/linsang233/article/details/103393730
今日推荐