前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenGL自制游戏引擎-GreateWindow

OpenGL自制游戏引擎-GreateWindow

作者头像
祝你万事顺利
发布2019-06-24 10:47:51
1.8K0
发布2019-06-24 10:47:51
举报
文章被收录于专栏:Unity游戏开发

自制游戏引擎,学习OpenGL相关知识并进行实践,学习引擎底层知识,提高对游戏引擎的认识。

基于GLFW、GLEW的环境配置

这次我们使用下面的方式构建OpenGL环境 1.下载GLFW https://www.glfw.org/download.html 在glfw官网下载32Bit的package

These packages contain the GLFW header files, documentation and release mode static libraries, DLLs and import libraries for Visual C++ 2010-2019, MinGW-w64 and plain MinGW.

2.下载GLEW http://glew.sourceforge.net/

The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library. GLEW provides efficient run-time mechanisms for determining which OpenGL extensions are supported on the target platform. OpenGL core and extension functionality is exposed in a single header file. GLEW has been tested on a variety of operating systems, including Windows

3.新建一个空的C++工程 添加一个CPP工程

4.相关库的配置 在工程右键选择属性 在C/C++中设置常规添加库文件的头文件

附加包目录

在链接器中将上面添加的头文件与工程进行链接

附加库目录.PNG

在链接器的输入中添加要具体添加的lib

添加附加依赖项.PNG

开一个视窗

1.初始化glfw

代码语言:javascript
复制
glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//主版本号
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//子版本号
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//OPENGL核心版本,使用可编程流水线

2.创建一个窗口,设置window为当前线程的主要上下文

代码语言:javascript
复制
//Open GLFW Window
    GLFWwindow* window = glfwCreateWindow(800, 900, "Frist Window", NULL, NULL);
    if (window == NULL)
    {
        printf("Open Window Failed");
        return -1;
    }
    glfwMakeContextCurrent(window);//将window设置为当前thread的主要上下文

3.初始化glew

代码语言:javascript
复制
glewExperimental = true;
    if (glewInit() != GLEW_OK)
    {
        printf("InitGLEW failed");
        glfwTerminate();
        return -1;
    }

4.设置窗口的Viewport,在RenderRoll循环渲染、等待系统消息

代码语言:javascript
复制
glViewport(0, 0, 800, 600);
    //Ready engines
    while (!glfwWindowShouldClose(window))
    {
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

Double buffer: 当我们只使用一个buffer的时候,pixel的渲染是从左到右从上到下的,会造成闪屏的问题。为了解决这个问题,使用两个Buffer。 frontBuffer:包括最终的显示在屏幕上的输出结果。 backBuffer:全部的渲染指令 当全部渲染指令完成的时候,将backBuffer转换到frontBuffer,图像将直接展现给我们。

5.添加一个退出按键

代码语言:javascript
复制
void  ProcessInput(GLFWwindow* window) {
    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
    {
        glfwSetWindowShouldClose(window, true);
    }
}

6.清除屏幕颜色缓冲区 在Render循环中添加清空Buffer的操作,否则渲染的buffer会和前一帧重叠

代码语言:javascript
复制
while (!glfwWindowShouldClose(window))
    {
        ProcessInput(window);

        glClearColor(1.0f, 0, 0, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

        glfwSwapBuffers(window);
        glfwPollEvents();
    }

参考资料: 1.《OpenGL编程指南》 2.https://learnopengl.com/Getting-started/Hello-Window 3.https://www.bilibili.com/video/av24353839

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.06.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基于GLFW、GLEW的环境配置
  • 开一个视窗
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档