Windows10+VS2019+OpenGL安装配置详解

Windows10+VS2019+OpenGL安装配置详解零基础入门 OpenGL 之安装配置 Windows10 VS2019 OpenGL 安装配置步骤 Windows10 VS2019 OpenGL 安装配置步骤零基础入门 OpenGL 之安装配置 VS2019 简介 VS2019 的分类 1 个人版 VisualStudio 专业版 VisualStudio 企业版 VisualStudio 简介一 VS2019 下载与安装 1 VisualStudio 下载 2 相关配置安

零基础入门OpenGL之安装配置

Windows10+VS2019+OpenGL安装配置步骤



VS2019简介

VS2019的分类

1.个人版:Visual Studio Community

 该版本仅供个人使用免费、功能完备的可扩展工具,面向构建非企业应用程序的开发人员。 visual studio 2019 官方正式版授权:免费版,软件大小:4.89GB,语言:简体中文; Visual Studio 2019 是微软开发的一款功能强大的IDE编辑器,visual studio 2019可完美开发;Windows、iOS 和 Android 程序,并且visual studio 2019 已内置安卓模拟器,让开发人员不必为跨平台的程序运行所烦恼。 

2.专业版:Visual Studio Professional

 售价1,199 美元,专业开发人员工具和服务,面向单个开发人员或小团队。visual studio 2019 旗舰版 官方正式版授权:免费版,软件大小:7.79GB语言:简体中文; visual studio 2019 旗舰版功能强大,可直接编辑windows android ios 应用程序,新版本内含集成的设计器、编辑器、调试器和探查器,采用 C 、C++、JavaScript、Python、TypeScript、Visual Basic、F 等进行编码。 

3.企业版:Visual Studio Enterprise

 售价5,999 美元,具备高级功能的企业级解决方案(包括高级测试和 DevOps),面向应对各种规模或复杂程度项目的团队。大小:18GB Visual Studio 使你能够准确、高效地编写代码,并且不会丢失当前的文件上下文。 可以轻松地放大到详细信息,例如调用结构、相关函数、签入和测试状态。 还可以利用功能来重构、识别和修复代码问题。通过利用 Microsoft、合作伙伴和社区提供的工具、控件和模板,扩展 Visual Studio 功能。 通过构建扩展来根据喜好进行进一步操作和自定义。 在任意提供商(包括 GitHub)托管的 Git 存储库中管理源代码。 也可以使用 Azure DevOps 管理整个项目的代码、bug 和工作项。使用 Visual Studio 调试程序,通过代码的历史数据可跨语言快速查找并修复 bug,无论是在本地还是远程。 利用分析工具发现并诊断性能问题,无需离开调试工作流。 

OpenGL简介

OpenGL是一种图形应用程序编程接口(Application Programming Interface,API)。它是一种可以对图形硬件设备特性进行访问的软件库,OpenGL被设计为一个现代化的、硬件无关的接口,因此我们可以在不考虑计算机操作系统或窗口系统的前提下,在多种不同的图形硬件系统上,完全通过软件的方式实现OpenGL的接口。OpenGL自身并不包含任何执行窗口任务或者处理用户输入的函数,也没有提供任何用于表达三维物理模型,或者读取图像文件(例如PNG、JPEG文件)的操作,一个用来渲染图像的OpenGL程序需要执行的主要操作如下:


本文是对Windows10环境下,安装Visual Studio 2019,对OpenGL进行环境搭建配置

一、VS2019下载与安装

1.Visual Studio 2019下载

链接地址:https://visualstudio.microsoft.com/zh-hans/vs/

在这里插入图片描述

2.相关配置安装

3.安装位置一般情况可以选择默认的位置(也可以根据自己需求存放其他位置,这里我更改为到F盘存放),随后点击安装即可!

在这里插入图片描述

4.安装完成进入界面

在这里插入图片描述

5.创建项目,并命名(这里我命名为main),并指定存储位置

在这里插入图片描述

6.创建完成之后如图所示

在这里插入图片描述
可能会有弹出需要你登录的界面,这里可以直接注册一个Microsoft账号就可以了,注册是免费的!如果你不登录Microsoft账号的话你只能试用30天,登录了Microsoft账号就可以永久使用啦!

二、OpenGL安装配置

1.下载GLFW

2.下载FreeGLUT

下载FreeGLUT链接地址:https://www.transmissionzero.co.uk/software/freeglut-devel/

在这里插入图片描述
将下载后的文件解压,将include文件夹内的GL文件夹内的其他头文件全部拷贝到F:\VS_document\VC\Tools\MSVC\14.29.30037\include\GL中

3.安装nupengl

4.导入依赖

5.测试用例

代码如下:

 #include  
         #include  
         #include  
         #define GL_PI 3.1415f  float fMoonRot = 0.0f; float fAdamRot = 0.0f; float fEarthRot = 0.0f; float fMarsRot = 0.0f; float fMarsatellite1 = 0.0f; float fMarsatellite2 = 0.0f; float fHesperRot = 0.0f; float fJupiterRot = 0.0f; float fSaturnRot = 0.0f; float fSaturn1 = 0.0f; float fUranusRot = 0.0f; float fNeptuneRot = 0.0f; GLfloat whiteLight[] = { 
       0.2f,0.2f,0.2f,1.0f }; GLfloat lightPos[] = { 
       0.0f,0.0f,0.0f,1.0f }; void sun() { 
       //绘制太阳  glColor3ub(255, 50, 0); glDisable(GL_LIGHTING); //关闭光源  glutSolidSphere(25.0f, 200.0f, 200.0f); glEnable(GL_LIGHTING); //启动光源  glLightfv(GL_LIGHT0, GL_POSITION, lightPos); } void Adam() { 
       //绘制水星  glPushMatrix(); glColor3ub(0, 0, 255); glRotatef(fAdamRot, 0.0f, 1.0f, 0.0f); glTranslatef(30.0f, 0.0f, 0.0f); glutSolidSphere(2.0f, 200.0f, 200.0f); //水星半径是地球的40% 即2  fAdamRot += 4.152f; //水星公转周期为地球24.08% ,即4.152  if (fAdamRot >= 365.0f) fAdamRot = 0.0f; glPopMatrix(); } void Hesper() { 
       //绘制金星  glPushMatrix(); glColor3ub(255, 215, 0); glRotatef(fHesperRot, 0.0f, 1.0f, 0.0f); glTranslatef(40.0f, 0.0f, 0.0f); glutSolidSphere(4.75f, 200.0f, 200.0f); //金星半径是地球的95% 即4.75  fHesperRot += 1.62f; //金星公转周期为地球61.56% ,即1.62  if (fHesperRot >= 365.0f) fHesperRot = 0.0f; glPopMatrix(); } void Earth_Moon() { 
       //绘制地球,所有运行参数以地球为标准  glPushMatrix(); glColor3ub(0, 0, 255); glRotatef(fEarthRot, 0.0f, 1.0f, 0.0f); glTranslatef(55.0f, 0.0f, 0.0f); //设地球周期365  glutSolidSphere(5.0f, 20.0f, 20.0f); //设地球半径5  //根据基于地球的坐标进行旋转,并绘制月球  glColor3ub(200, 200, 200); glRotatef(fMoonRot, 0.0f, 1.0f, 0.0f); glTranslatef(5.0f, 0.0f, 0.0f); // 不断平移 fMoonRot += 13.3f; //月球的公转周期 27.3 天 365/27.3==13.3  if (fMoonRot >= 365.0f) // 月球半径是地球的3/11 即1.363  fMoonRot = 0.0f; glutSolidSphere(1.363f, 200.0f, 200.0f); glPopMatrix(); //出栈后值变化,要在下一次循环中才有效  fEarthRot += 1.0f; if (fEarthRot >= 365.0f) fEarthRot = 0.0f; } void Mars() { 
       //绘制火星 glPushMatrix(); glColor3ub(255, 0, 0); glRotatef(fMarsRot, 0.0f, 1.0f, 0.0f); glTranslatef(65.0f, 0.0f, 0.0f); glutSolidSphere(2.65f, 200.0f, 200.0f); //火星半径是地球的53% 即2.65 glPushMatrix(); //根据基于火星的坐标进行旋转,并绘制火卫一  glColor3ub(255, 100, 100); glRotatef(fMarsatellite1, 0.0f, 1.0f, 0.0f); glTranslatef(2.0f, 0.0f, 2.0f); fMarsatellite1 += 13.3f; if (fMarsatellite1 >= 365.0f) fMarsatellite1 = 0.0f; glutSolidSphere(0.963f, 200.0f, 200.0f); glPopMatrix(); glPushMatrix(); //根据基于火星的坐标进行旋转,并绘制火卫二  glColor3ub(255, 200, 200); glRotatef(fMarsatellite2, 0.0f, 1.0f, 0.0f); glTranslatef(-3.0f, 0.0f, -3.0f); fMarsatellite2 += 13.3f; if (fMarsatellite2 >= 365.0f) fMarsatellite2 = 0.0f; glutSolidSphere(1.20f, 200.0f, 200.0f); glPopMatrix(); fMarsRot += 0.5f; //火星公转周期为地球2倍 if (fMarsRot >= 365.0f) fMarsRot = 0.0f; glPopMatrix(); } void Jupiter() { 
       //绘制木星  glPushMatrix(); glColor3ub(200, 100, 0); glRotatef(fJupiterRot, 0.0f, 1.0f, 0.0f); glTranslatef(100.0f, 0.0f, 0.0f); glutSolidSphere(17.0f, 200.0f, 200.0f); //木星半径是地球的11.21倍 即56.05 为了美观,定为17  glPushMatrix(); glColor3ub(250, 180, 0); glRotatef(70.0f, 1.0f, 0.0f, 0.0f); //环旋转70度  glutSolidTorus(1.42, 20, 10, 100); //效果上看,第一个参数是圆环的宽度 glPopMatrix(); fJupiterRot += 0.15f; //木星公转周期为地球11.87倍 ,即0.084 为了明显,设为0.15 if (fJupiterRot >= 365.0f) fJupiterRot = 0.0f; glPopMatrix(); } void Saturn() { 
       //绘制土星  glPushMatrix(); glColor3ub(73, 60, 32); glRotatef(fSaturnRot, 0.0f, 1.0f, 0.0f); glTranslatef(148.0f, 0.0f, 0.0f); glutSolidSphere(15.0f, 200.0f, 200.0f); //土星半径是地球的9.45倍 即47.25 为了美观,定为15  //绘制土卫一 glPushMatrix(); glColor3ub(255, 200, 200); glRotatef(fSaturn1, 0.0f, 1.0f, 0.0f); glTranslatef(-17.0f, 0.0f, -17.0f); fSaturn1 += 6.4f; if (fSaturn1 >= 365.0f) fSaturn1 = 0.0f; glutSolidSphere(1.20f, 200.0f, 200.0f); glPopMatrix(); glPushMatrix(); glColor3ub(200, 200, 100); glRotatef(70.0f, 1.0f, 0.0f, 0.0f); //环旋转70度  glutSolidTorus(1.42, 25, 10, 100); //效果上看,第一个参数是圆环的宽度 glPopMatrix(); fSaturnRot += 0.03f; //土星公转周期为地球29.47倍 ,即0.03  if (fSaturnRot >= 365.0f) fSaturnRot = 0.0f; glPopMatrix(); } void UranusRot() { 
       //绘制天王星  glPushMatrix(); glColor3ub(0, 180, 100); glRotatef(fUranusRot, 0.0f, 1.0f, 0.0f); glTranslatef(202.0f, 0.0f, 0.0f); glutSolidSphere(15.0f, 200.0f, 200.0f); //天王星半径是地球的倍 即4.01,即15  glPushMatrix(); glColor3ub(0, 100, 0); glRotatef(150.0f, 1.0f, 0.0f, 0.0f); //环旋转度  glutSolidTorus(1.0, 20, 10, 100); //效果上看,第一个参数是圆环的宽度 glPopMatrix(); fUranusRot += 0.03f; //天王星公转周期为地球84.06倍 ,即0.0124  if (fUranusRot >= 365.0f) fUranusRot = 0.0f; glPopMatrix(); } void Neptune() { 
       //绘制海王星  glPushMatrix(); glColor3ub(0, 0, 215); glRotatef(fNeptuneRot, 0.0f, 1.0f, 0.0f); glTranslatef(240.0f, 0.0f, 0.0f); glutSolidSphere(19.45f, 200.0f, 200.0f); //海王星半径是地球的倍 即3.89,即19.45  fNeptuneRot += 2.17f; //天王星公转周期为地球46%倍 ,即2.17  if (fUranusRot >= 365.0f) fNeptuneRot = 0.0f; glPopMatrix(); } void RenderScene(void) { 
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glTranslatef(0.0f, 0.0f, -300.0f); sun(); Adam(); Hesper(); Earth_Moon(); Mars(); Jupiter(); Saturn(); UranusRot(); Neptune(); glPopMatrix(); glutSwapBuffers(); } void ChangeSize(GLsizei w, GLsizei h) { 
       GLfloat fAspect; if (h == 0) h = 1; glViewport(0, 0, w, h); fAspect = (GLfloat)w / (GLfloat)h; glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0f, fAspect, 1.0, 4000); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void SetupRC(void) { 
       glEnable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glEnable(GL_LIGHTING); //启动光源  glLightModelfv(GL_LIGHT_MODEL_AMBIENT, whiteLight); //使用whiteLght所指定的环境光  glLightfv(GL_LIGHT0, GL_POSITION, lightPos); //0号光源的位置  glEnable(GL_LIGHT0); } void TimerFunc(int value) { 
       glutPostRedisplay(); glutTimerFunc(100, TimerFunc, 1); } int main(int argc, char* argv[]) { 
       glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(800, 600); glutCreateWindow("Orthographic Projection"); glutDisplayFunc(RenderScene); glutReshapeFunc(ChangeSize); SetupRC(); glutTimerFunc(250, TimerFunc, 1); //自动动画,计时器  glutMainLoop(); return 0; } 

该部分代码是绘制星球的示例效果
在这里插入图片描述


以上便是在windows10环境下,安装VS2019+OpenGL的详细步骤,到此安装配置完成,开启OpenGL的学习之路吧!

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

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

(0)
上一篇 2026年3月17日 下午3:54
下一篇 2026年3月17日 下午3:54


相关推荐

  • 巧设IP路由 实现不同网段互通[通俗易懂]

    巧设IP路由 实现不同网段互通[通俗易懂]【简介】当一个局域网中必须存在两个以上网段时,分属于不同网段内的主机彼此互不可见。为了解决这个问题,就必须在不同的网段之间设置路由器。如果花费上万元资金购买一台路由器,仅仅用于连接局域网中的两个网段,实在不值得。有什么好的解决方案吗?当然有,这就是Windows中的IP路由。  当一个局域网中必须存在两个以上网段时,分属于不同网段内的主机彼此互不可见。为了解决这个问题,就必须在不同的网段之间设置…

    2025年10月31日
    4
  • 什么是前端跨域,怎么解决跨域问题

    什么是前端跨域,怎么解决跨域问题什么是跨域?跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。所谓同源是指:域名,协议,端口均相同,不明白没关系,举个栗子:http://www.123.com/index.html调用http://www.123.com/server.php(非跨域)http://www.123.com/index.html调用http://www.456.com/server.php(主域名不同:123/456,跨域)http://abc.1

    2022年6月3日
    44
  • 备课三小时变十分钟?我试了科大讯飞的星火教师助手

    备课三小时变十分钟?我试了科大讯飞的星火教师助手

    2026年3月14日
    1
  • 吐血推荐:VBScript教程及语言参考电子书「建议收藏」

    吐血推荐:VBScript教程及语言参考电子书「建议收藏」经过两次练手之后,花费一天时间,通过对从迅雷上所下载所有VBScript资源的整合,鼎力制作了此本VBScript教程及语言参考书。全书资源丰富,主要包括两部分内容。第一部分是教程部分,通过此章节的学习,我们可以很轻松的掌握VBScript的基础知识。第二部分是语言参考,提供一个搜索页面,在我们使用的时候可以随时查找到自己所需要查找的函数等的…

    2022年6月25日
    34
  • JAVA: String转JsonArray

    JAVA: String转JsonArrayStringstr=”…”;JsonArrayjsonArray=newJsonParser().parse(str).getAsJsonArray();JsonObjectjsonObject=jsonArray.get(0).getAsJsonObject();StringtempId=jsonObject.get(“SUBJECT_DIRECTOR_ID”).getAsString();

    2022年6月20日
    214
  • phcharm激活码破解方法「建议收藏」

    phcharm激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    84

发表回复

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

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