ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OpenGL开发环境搭建和测试

2021-09-21 17:34:15  阅读:150  来源: 互联网

标签:OpenGL Windows window GLFW 测试 props 动态链接库 属性 搭建


需要使用 的类库:

  GLFW GLEW GLUT...

    •  以下使用 GLFW&GLEW,Windows下使用 VS的包管理器 可以找到这两个包,
      • 项目 > 管理NuGet程序包
    •  安装后,在项目目录package里可以找到对应类库

Windows平台配置:

  1. 安装好GLEW,GLFW后,packages中包含可能包含全部版本的类库,请选择正确版本
    • GLEW版本不限,更高级的版本,支持的OpenGL版本也就越高。
    • GLFW根据平台不同,划分出了适配不同平台的版本,所以要选择正确的平台。

 

    2. Windows下开发OpenGL渲染器  推荐使用VS

    3. VS开发可以使用  属性表(.props)  配置项目环境:

    • 视图 > 其他窗口 > 属性管理器
      • 展开项目属性列表后,有4个筛选器,分别对应四种调试模式下的  属性表单
      • 可以选择第一个筛选器,右键选择添加 > 新项目属性表
      • 双击新建的属性表,可以配置该属性表

 

    • 将头文件,置入:
      • 属性表文件(.props) > VC++目录 > 包含目录

      

    • 针对静态链接库,需要设置以下两项:
      • 静态库的路径
        • 属性表文件(.props) > VC++目录 > 库目录
      • 需要使用的静态库文件
        • 属性表文件(.props) > 链接器 > 输入 > 附加依赖项

 

    • 针对动态链接库,有以下两种情况:
      • 此动态链接库拥有 函数列表(.lib)
        • 将函数列表(.lib)加入到项目。
        • 将动态链接库置入:可执行程序生成路径,或环境变量path指定的位置。
      • 此动态链接库没有 函数列表(.lib)
        • 将动态链接库置入:可执行程序生成路径,或环境变量path指定的位置。

 

Windows平台测试:

    1. 新建项目 > 配置项目环境 > 添加main.cpp

main.cpp:

#include<iostream>
#include<glew.h>
#include<glfw3.h>

void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window);


int main(int _Argc, char** argv)
{
    // glfw: initialize and configure
    // ------------------------------
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

#ifdef __APPLE__
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif

    // glfw window creation
    // --------------------
    GLFWwindow* window = glfwCreateWindow(1000,700, "LearnOpenGL", NULL, NULL);
    if (window == NULL)
    {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);// Init GLEW to manage OpenglFuncptr(Because of GLEW,we can use OpenglFunc)
    glewExperimental = GL_TRUE;
    if (glewInit() != GLEW_OK)
    {
        std::cout << "Failed to initialize GLEW" << std::endl;
        return -1;
    }

    // configure global opengl state
    // -----------------------------
    glEnable(GL_DEPTH_TEST);

    while (!glfwWindowShouldClose(window))
    {

        // input
        // -----
        processInput(window);

        // render
        // ------
        glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


        // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)
        // -------------------------------------------------------------------------------
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    // glfw: terminate, clearing all previously allocated GLFW resources.
    // ------------------------------------------------------------------
    glfwTerminate();
    return 0;
}

// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly
// ---------------------------------------------------------------------------------------------------------
void processInput(GLFWwindow *window)
{
    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
        glfwSetWindowShouldClose(window, true);
}

// glfw: whenever the window size changed (by OS or user resize) this callback function executes
// ---------------------------------------------------------------------------------------------
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    // make sure the viewport matches the new window dimensions; note that width and 
    // height will be significantly larger than specified on retina displays.
    glViewport(0, 0, width, height);
}

    2. 在函数 glClearColor(r, g, b, a) 中,改变颜色,如果颜色显示正常,则测试通过,按Esc可以退出窗口。

 

 

标签:OpenGL,Windows,window,GLFW,测试,props,动态链接库,属性,搭建
来源: https://www.cnblogs.com/SupersLWF/p/15317029.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有