vs2019配置opengl环境_vs2010配置opengl

vs2019配置opengl环境_vs2010配置opengl这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Mar

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

VS2019下载与安装

1.下载和安装Visual Studio

选择社区版本进行下载即可
在这里插入图片描述
2.在 Visual Studio 中安装 C 和 C++ 支持

Visual Studio显示行号

找到工具菜单——–>选项——>文本编辑器——->C/C++
在这里插入图片描述

OpenGL安装

1.创建项目,并命名(此处我命名为main),指定存储位置

在这里插入图片描述

2.创建好之后如图所示

在这里插入图片描述

3.下载GLFW

GLFW下载链接(此处我下载的是32-bit Windows binaries,因为我的VS2019是在本地x86环境下编译的)vs2019配置opengl环境_vs2010配置opengl

将下载好的文件进行解压,并把其中include文件夹内的GLFW文件夹内的头文件,拷贝到C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\GL中。若没有GL文件夹则自己创建。
在这里插入图片描述

在这里插入图片描述
将解压后的文件夹中的lib-vc2019文件夹内的glfw3.dll拷贝到C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin的Hostx64和Hostx6文件夹下的每个文件夹内部(每个都有x64和x86,需要拷贝到最小文件夹内部);
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将glfw3. lib和glfw3dll.lib拷贝到C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\lib的x64和x86文件夹内
在这里插入图片描述

4.下载GLEW

下载GLEW
在这里插入图片描述
解压下载好的压缩文件,将include文件夹中的GL文件夹内的头文件,全部拷贝到C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\GL中
在这里插入图片描述
在这里插入图片描述

  • 将glew-2.1.0-win32\glew-2.1.0\bin\Release下的Win32内的dll文件拷贝到C:\Program
    Files (x86)\Microsoft Visual
    Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin的Hostx64的x86文件夹内和Hostx86的x86文件夹内
  • 同理,将glew-2.1.0-win32\glew-2.1.0\bin\Release下的x64内的dll文件拷贝到C:\Program
    Files (x86)\Microsoft Visual
    Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin的Hostx64的x64文件夹内和Hostx86的x64文件夹内

在这里插入图片描述
在这里插入图片描述

  • 将glew-2.1.0-win32\glew-2.1.0\lib\Release下的Win32内的lib文件拷贝到C:\Program
    Files (x86)\Microsoft Visual
    Studio\2019\Community\VC\Tools\MSVC\14.27.29110\lib的x86文件夹内
  • 将glew-2.1.0-win32\glew-2.1.0\lib\Release下的x64内的lib文件拷贝到C:\Program
    Files (x86)\Microsoft Visual
    Studio\2019\Community\VC\Tools\MSVC\14.27.29110\lib的x64文件夹内

5.下载FreeGLUT

FreeGLUT下载地址
在这里插入图片描述
将下载后的文件解压,将include文件夹内的GL文件夹内的除glut.h的其他头文件全部拷贝到C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\GL中
在这里插入图片描述
同理,将lib文件和dll文件按照glew的安装文件夹路径分别安装即可。

6.进入VS2019,点击项目,管理NuGet程序包,在左边浏览栏目里搜索nupengl,安装它们

在这里插入图片描述

7.在运行代码之前,将freeglut.dll, glew32.dll, glfw3.dll 拷贝到C:\Windows\SysWOW64 或C:\Windows\System32中.(为保险起见我两个文件夹内都拷贝了)

8. 进入VS2019,右键之前创建的main项目(右侧),选择属性,连接器,输入,将freeglut.lib;glew32.lib;glfw3.lib;OpenGL32.lib;复制到附加依赖项中

在这里插入图片描述
在这里插入图片描述

3.测试代码1

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


void window_resized(GLFWwindow* window, int width, int height);
void key_pressed(GLFWwindow* window, int key, int scancode, int action, int mods);
void show_glfw_error(int error, const char* description);

 
int main()
{ 
   
    glfwSetErrorCallback(show_glfw_error);


    if (!glfwInit()) { 
   
        std::cerr << "GLFW 초기화 실패" << '\n';
        exit(-1);
    }


    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);


    GLFWwindow* window = glfwCreateWindow(
        800, // width
        600, // height
        "OpenGL Example",
        NULL, NULL);
    if (!window)
    { 
   
        std::cerr << "윈도우 생성 실패" << '\n';
        glfwTerminate();
        exit(-1);
    }


    glfwMakeContextCurrent(window);


    glfwSetWindowSizeCallback(window, window_resized);
    glfwSetKeyCallback(window, key_pressed);


    glfwSwapInterval(1);


    glewExperimental = GL_TRUE;
    GLenum err = glewInit();
    if (err != GLEW_OK) { 
   
        std::cerr << "GLEW 초기화 실패 " << glewGetErrorString(err) << '\n';
        glfwTerminate();
        exit(-1);
    }


    std::cout << glGetString(GL_VERSION) << '\n';


    int nr_extensions = 0;
    glGetIntegerv(GL_NUM_EXTENSIONS, &nr_extensions);

    for (int i = 0; i < nr_extensions; ++i) { 
   
        std::cout << glGetStringi(GL_EXTENSIONS, i) << '\n';
    }


    glClearColor(0, 0, 1, 1);


    while (!glfwWindowShouldClose(window)) { 
   

        glClear(GL_COLOR_BUFFER_BIT);

        glfwSwapBuffers(window);

        glfwPollEvents();
    }


    glfwDestroyWindow(window);


    glfwTerminate();
    return 0;
}

void show_glfw_error(int error, const char* description) { 
   
    std::cerr << "Error: " << description << '\n';
}

void window_resized(GLFWwindow* window, int width, int height) { 
   
    std::cout << "Window resized, new window size: " << width << " x " << height << '\n';

    glClearColor(0, 0, 1, 1);
    glClear(GL_COLOR_BUFFER_BIT);
    glfwSwapBuffers(window);
}

void key_pressed(GLFWwindow* window, int key, int scancode, int action, int mods) { 
   
    if (key == 'Q' && action == GLFW_PRESS) { 
   
        glfwTerminate();
        exit(0);
    }
}

Jetbrains全家桶1年46,售后保障稳定

在这里插入图片描述

4.测试代码2

#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>

void MyDisplay() { 
                         //디스플레이 콜백함수
 glClear(GL_COLOR_BUFFER_BIT);       //GL 상태변수 설정
 glViewport(0, 0, 300, 300);
 glColor3f(1.0, 1.0, 1.0);
 glBegin(GL_POLYGON);                //입력 기본요소 정의
 glVertex3f(-0.5, -0.5, 0.0);
 glVertex3f(0.5, -0.5, 0.0);
 glVertex3f(0.5, 0.5, 0.0);
 glVertex3f(-0.5, 0.5, 0.0);
 glEnd();
 glFlush();
}

int main(int argc, char** argv) { 
   
 glutInit(&argc, argv);               //GLUT 윈도우 함수
 glutInitDisplayMode(GLUT_RGB);
 glutInitWindowSize(300, 300);
 glutInitWindowPosition(0, 0);
 glutCreateWindow("OpenGL Sample Drawing");

 glClearColor(0.0, 0.0, 0.0, 1.0);   //GL 상태변수 설정
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);

 glutDisplayFunc(MyDisplay);         //GLUT 콜백함수 등록
 glutMainLoop();                     //이벤트 루프 진입
 return 0;
}

在这里插入图片描述

参考链接

1.Visual Studio 2019配置OpenGL环境
2.VS2019 安装配置OpenGL
3.For His Kingdom #SDN #SD-WAN #NFV #Cloud #System #OpenGL #ComputerGraphics

总结

至此环境配置完毕,已经是心如止水的状态进行完了配置的记录。不知道为什么配好了,也不知道之前为啥一直不对,其实现在也不能确定是否完全配置成功,但至少测试代码可以跑通了,日后遇到什么问题再进行修改补充。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/209535.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • es数据库简介

    es数据库简介##1.es是什么ElasticSearch简称ES,是一个高拓展和开源的全文搜索和分析引擎,可以准实时地存储、搜索、分析海量的数据。它和MongoDB、redis等一样是非关系型数据。业应用定位:采用RestfulAPI标准的可扩展和高可用的实时数据分析的全文搜索工具。可拓展:开源软件,支持很多第三方插件。高可用:在一个集群的多个节点中进行分布式存储,索引支持shards和复制,即使部分节点down掉,也能自动进行数据恢复和主从切换。采用RestfulAPI标准:通过http接口使用JSO

  • OpenProcessToken函数 何时会失败「建议收藏」

    OpenProcessToken函数 何时会失败「建议收藏」 OpenProcessToken函数的功能是打开一个与一进程相联系的访问令牌(access  token),它的原型如下:  BOOL  OpenProcessToken(      HANDLE  ProcessHandle,        DWORD  DesiredAccess,        PHANDLE  TokenHandle  );    如同

  • 使用SurfaceView和MediaPlayer实现视频做为背景

    使用SurfaceView和MediaPlayer实现视频做为背景

  • select into from 与 insert into select用法详解

    select into from 与 insert into select用法详解selectintofrom和insertintoselect都被用来复制表结构和表中数据,两者的主要区别为:selectintofrom要求目标表不存在,因为在插入时会自动创建。insertintoselectfrom要求目标表已存在数据库中。一、INSERTINTOSELECT语句  1、语句形式为:

  • 我是如何学习Android源码的

    我是如何学习Android源码的一连很长时间(从2017/06/09到2017/06/26)都在研究蓝牙,而且这只是文章发表的时间,再加上组织文章和研究的时间,不知不觉中就坚持这么久………,也写了蓝牙的三篇博客,而且篇幅很长如下:在这里就不放文章链接了,有需要的在我的文章中搜索即可,现在,是时候放空一下,给自己充充电了,来张美景,欣赏一下北京的晚霞。言归正传,先放上Android源码连接地址Android源码,至于研究源码的好处,

  • mybatis log plugin 2021 激活码(最新序列号破解)

    mybatis log plugin 2021 激活码(最新序列号破解),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号