VS2017 C++ 在Windows下配置OpenGL编程环境

1. 下载所需文件

2. 配置VS目录

2.1 步骤

  • 新建C++的控制台项目
    在这里插入图片描述

  • 项目属性中配置依赖项
    在这里插入图片描述

  • 注意:不是要新增加目录,而是需要把对应文件放进对应的文件夹中
    在这里插入图片描述

  • dll文件需要放进文件夹(C:\Windows\SysWOW64)(64位)中,或者文件夹(C:\Windows\System32)

  • .h头文件添加入项目中

  • .lib文件放进C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include(根据自己的实际目录位置)
    在这里插入图片描述

  • 完成上述步骤,环境就已经配置好

  • 注意
    一定要把所有的.h头文件放进include目录中,所有.lib文件放进lib目录中,所有.dll文件放进系统文件夹中!!!!否则会出现include找不到头文件等错误

2.2 测试环境(Code)

  • 用于测试的代码(引用于网络)
#include<glut.h>
#include<gl/glu.h>
#include<gl/gl.h>

void renderScene(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    glBegin(GL_TRIANGLES);
    glVertex3f(-0.5, -0.5, 0.0);
    glVertex3f(0.5, 0.0, 0.0);
    glVertex3f(0.0, 0.5, 0.0);
    glEnd();
    glutSwapBuffers();
}

int main(int argc, char* argv[])
{
    glutInit(&argc, (char**)argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(320, 320);
    glutCreateWindow("Hello OpenGL");
    glutDisplayFunc(renderScene);
    glutMainLoop();//enters the GLUT event processing loop.
    return 0;
}

3. 实例

3.1 问题描述

  • 太阳系模型动画
    建立太阳、地球和月亮的运动模型;增加光照系统,模拟太阳、地球和月亮的光照环境;并用动画方式显示模型。以加深学生对几何变换、投影变换以及观察变换的理解。

3.2 初步原型

  • 待修改
	/**********************************************************
	* 太阳的直径为139万千米,为地球的109倍,是月球的400倍。
	* 这样的比例太过于悬殊 不利于实现
	* 故采取太阳:地球:月亮=60:4:1
	*/
	#include <windows.h>
	#include <gl/glut.h>
	static int year = 0, day = 0;
	static int sun = 0;
	void init()
	{
		glClearColor(0.0, 0.0, 0.0, 0.0);
		glShadeModel(0x1D00);
	}
	
	void display()
	{
		//清除屏幕上的内容 否则会堆积
		glClear(0x00004000);
		glColor3f(1.0, 1.0, 1.0);
	
		//旋转操作
		glPushMatrix();
	
		glRotatef((GLfloat)sun, 0.0, 1.0, 0.0);//绕Y旋转
		//glutSolidSphere(1.0, 20, 16);//实心球体
		glutWireSphere(1.0, 20, 16);//画网格球体
		glRotatef((GLfloat)year, 0.0, 1.0, 0.0);
		glTranslatef(2.0, 0.0, 0.0);
		glRotatef((GLfloat)day, 0.0, 1.0, 0.0);
		//glutSolidSphere(0.2, 10, 8);
		glutWireSphere(0.2, 10, 8);
	
		//生成带纹理球体
		//GLUquadricObj *m_pObj;//保存绘图模式、法线模式、法线朝向、纹理等信息
		//m_pObj = gluNewQuadric();
		//gluSphere(m_pObj, 1.0, 20, 16);
		//glPopMatrix();
	
	
		glutSwapBuffers();//交换缓冲区
	}
	
	void reshape(int w, int h)
	{
		glViewport(0, 0, (GLsizei)w, (GLsizei)h);//显示窗口
		glMatrixMode(GL_PROJECTION);
	
		glLoadIdentity();
		gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0);
	
		glMatrixMode(GL_MODELVIEW);
		glLoadIdentity();
	
		//定义一个视图矩阵,并与当前矩阵相乘
		gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
	}
	
	void keyboard(unsigned char key, int x, int y)
	{
		switch (key)
		{
	
		case 'd':
			day = (day + 10) % 360;
			sun = (sun + 1) % 360;
			glutPostRedisplay();
			break;
	
		case 'D':
			day = (day - 10) % 360;
			sun = (sun + 1) % 360;
			glutPostRedisplay();
			break;
	
		case 'y':
			year = (year + 5) % 360;
			sun = (sun + 1) % 360;
			glutPostRedisplay();
			break;
	
		case 'Y':
			year = (year - 5) % 360;
			sun = (sun + 1) % 360;
			glutPostRedisplay();
			break;
	
		default:
			break;
		}
	}
	
	int main(int argc, char **argv)
	{
		glutInit(&argc, argv);
		glutInitWindowSize(1000, 1000);//改变视窗大小
		glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);//
		glutInitWindowPosition(100, 100);
		glutCreateWindow(argv[0]);
	
		init();
	
		glutDisplayFunc(display);
		glutReshapeFunc(reshape);
		glutKeyboardFunc(keyboard);
		glutMainLoop();
	
		return 0;
	}
	
	```
	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值