OpenGL + Visual Studio
OpenGL + Visual Studio1、下载Visual Studio可以使用社区版本:官网下载2、下载OpenGL工具包官网下载freeglut下载3、配置FreeGLUT4、程序运行5、参考文献1.计算机图形学2.FreeGult配置简介...
OpenGL + Visual Studio
一、下载Visual Studio
可以使用社区版本:官网下载
二、下载OpenGL工具包
三、配置GLUT工具包
1. 将下载的工具包解压
2. 将解压后的相关文件复制到对应路径中,配置glut库文件
该配置建立项目时候需要在项目->管理NuGet中搜索nupengl并下载才能实现
四、配置FreeGLUT
1. 将下载的FreeGLUT解压
2. 配置FreeGLUT工具包
(1)将解压后D:\计算机图形与图像\freeglut-MSVC-3.0.0-2.mp\freeglut\include\GL中的GL文件夹复制到D:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include中的include文件夹中,如图所示
(2)将路径D:\计算机图形与图像\freeglut-MSVC-3.0.0-2.mp\freeglut\lib下的freeglut.lib文件复制到路径D:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\lib下的x86和x64文件中,如图所示:
(3)将路径D:\计算机图形与图像\freeglut-MSVC-3.0.0-2.mp\freeglut\bin下的freeglut.dll文件复制到C:\Windows下的System32和SysWOW64文件夹中
五、运行程序
创建项目:
代码:
#include <GL/glut.h>
#include <math.h>
void setCube(void) {
glClearColor(1.0, 1.0, 1.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0, 0, 0);//设置黑色
glLoadIdentity();//加载单位矩阵
gluLookAt(6, 0, 2.5, 0, 0, 0, 1, 1, 0);
//前三个参数设置观察者的观察位置,中三个参数设置观察点的位置,后三个参数设置观察者的观察方向
glLineWidth(2.0f);//设置边的像素宽,默认为1.0f
glutWireCube(2.0);
glFlush();
}
void drawCube(void) {
glClearColor(1.0, 1.0, 1.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
gluLookAt(4, 0, 1.5, 0, 0, 0, 1, 1, 0);
//绘制正方体的面
glColor3f(0, 1, 0);
glBegin(GL_QUADS);
//---1---
glNormal3f(-1, 0, 0);//设置点的法向量
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(0.5, 0.5, -0.5);
//---2---
glNormal3f(-1, 0, 0);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(-0.5, 0.5, -0.5);
//---3---
glNormal3f(0, 1, 0);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(0.5, 0.5, -0.5);
//---4---
glNormal3f(0, -1, 0);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(0.5, -0.5, -0.5);
//---5---
glNormal3f(0, 0, 1);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
//---6---
glNormal3f(0, 0, -1);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
glEnd();
//draw
glColor3f(0, 0, 0);
glLineWidth(2.0f);
//绘制正方体的边
glBegin(GL_LINES);
//---1---
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(0.5, 0.5, 0.5);
//---2---
glVertex3f(0.5, 0.5, -0.5);
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(0.5, 0.5, -0.5);
//---3---
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(0.5, 0.5, -0.5);
glVertex3f(0.5, 0.5, -0.5);
glVertex3f(0.5, 0.5, 0.5);
//---4---
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(-0.5, 0.5, 0.5);
glEnd();
glFlush();
}
void threeD(int w, int h) {
glViewport(0, 0, (GLsizei)w, (GLsizei)h);//调整视图窗口大小
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1.0, 1.0, -1.0, 1.0, 2.0, 10.0);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc, char* argv[]) {int main(int argc, char* argv[]) {
//初始化GLUT library
glutInit(&argc, argv);
//对窗口的大小进行初始化
glutInitWindowSize(500, 500);
// 设置窗口出现的位置
//glutInitWindowPosition(int x, int y);
//初始化程序展示模式
glutInitDisplayMode(GLUT_RGBA);
glutCreateWindow("project of openGL");
//为当前窗口设置函数回调,用于画图
glutDisplayFunc(drawCube);
//窗口改变时的函数
glutReshapeFunc(threeD);
glutMainLoop();
return 0;
}
结果:
六、参考文献
1.计算机图形学
2.FreeGult配置简介
3.代码学习
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)