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

总结

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Struts2运行错误:Error filterStart

    Struts2运行错误:Error filterStart困扰我近10多天的问题,让我在框架功力修炼上几乎停滞不前,今天问题被KO,小小的高兴下。 纯洁的web.xml文件struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*

    2022年7月11日
    12
  • qt lineedit_个人总结学生

    qt lineedit_个人总结学生QLineEdit是一个单行文本编辑控件。使用者可以通过很多函数,输入和编辑单行文本,比如撤销、恢复、剪切、粘贴以及拖放等。通过改变QLineEdit的 echoMode() ,可以设置其属性,比如以密码的形式输入。文本的长度可以由 maxLength() 限制,可以通过使用 validator() 或者 inputMask() 可以限制它只能输入数字。在对同一个QLineEdit的validat…

    2022年10月6日
    2
  • HTML中的setCapture和releaseCapture

    HTML中的setCapture和releaseCapturesetCapture函数的作用就是将后续的mouse事件都发送给这个对象,releaseCapture就是将鼠标事件还回去,由document、window、object之类的自行来处理。这样就保证了在拖动的过程中,不会由于经过了其它的元素而受到干扰。另外,还有一个很重要的事情是,在Win32上,mousemove的事件不是一个连续的,也就是说,并不是我们每次移动1px的鼠标指针,就会发…

    2022年6月4日
    26
  • PHP 数组截取 array_slice() 函数

    PHP 数组截取 array_slice() 函数定义和用法array_slice()函数在数组中根据条件取出一段值,并返回。注释:如果数组有字符串键,所返回的数组将保留键名。(参见例子4)语法array_slice(array,offset,length,preserve)参数array必需。规定输入的数组。offset必需。数值。规定取出元素的开始位置。如果是正数,则从前往后开始取,如果是负值,从

    2022年5月17日
    39
  • 基于Qt的音乐播放器(一)添加音频文件,播放音乐,更新进度条

    基于Qt的音乐播放器(一)添加音频文件,播放音乐,更新进度条实现音频文件对话框(QFileDialog类)getOpenFileNames(this,”Selectoneormorefilestoopen”,”/home”,”Images(*.png*.xpm*.jpg)”);实现音乐播放(QMediaPlayer类/QMediaPlaylist类)实现进度条更新以及文件时长显示

    2022年5月16日
    41
  • 【大数据】最新大数据学习路线(完整详细版,含整套教程)

    【大数据】最新大数据学习路线(完整详细版,含整套教程)大数据学习路线java(Javase,javaweb)Linux(shell,高并发架构,lucene,solr)Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume)机器学习(R,mahout)Storm(Storm,kafka,redis)Spark(scala,spark,sparkcore,s…

    2022年6月10日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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