零基础入门OpenGL之安装配置
Windows10+VS2019+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
