一、实验目的
1、了解和掌握OpenGL的安装。
2、掌握一个简单的基于OpenGL的C++程序结构。
3.掌握win32程序框架。
4、掌握OpenGL中若干基本图形的绘制。
二、实验环境
硬件要求:
PC机,主流配置,最好为独立显卡,显存512M以上。
软件环境:
操作系统:Windows 7/Windows8
语言开发工具:Microsoft Visual studio 2010,Visual C++。
程序框架:
win32应用程序
三、实验内容与要求
要求: 实验所有步骤所生成的效果截图拷贝到实验报告文档里备查,并附上相应的代码。WORD文档命名方式:学号姓名-实验序号-实验名称。
内容:(注:便于打印,将背景黑色设置了透明色)
1、准备好OpenGL库文件。如下图:
(1)Glut32.dll 路径 %system root%\ SysWOW64。 如下图:
(2)Glut32.lib in PATH\lib。
(3)Glut.h in PATH\Include。如下图:
system root为windows7或windows8安装路径。
path为 Visual studio 2010的安装路径。
2.建立一个工程文件,并运行样本程序my_first_program.cpp,观看结果。
1)启动Microsoft Visual Studio 2010,在菜单栏中点击“文件”->“新建”->“项目”,如下图:
2)在“新建项目”对话框Visual C++的Win32项目,然后输入项目名称(例如lab1-basis),选择项目的保存位置(),如下图,单击“确认”按钮。
3)将工程文件的“源文件”中的C++源文件(lab1-basis.cpp)替换成以下样本程序:
以上样本程序的运行结果是创建一个名为“hello”的窗口,如下图所示:
3.认真阅读以上样本程序,理解每个函数的作用,并修改窗口标题,让其显示为“我的第一个OpenGL程序”,修改代码及其运行结果如下:
(1)修改代码:
char *argv[]={"我的第一个OpenGL程序"," "};
glutCreateWindow("我的第一个OpenGL程序");
(2)运行结果:
4.窗口的设置
在默认情况下,窗口的位置出现在屏幕的左上角,大小为300*300.
要求:
1)修改窗口位置,使之处于屏幕正中央
修改代码如下:
int cx = glutGet(GLUT_SCREEN_WIDTH);
int cy = glutGet(GLUT_SCREEN_HEIGHT);
glutInitWindowPosition((cx-500)/2,(cy-500)/2);
运行结果如下:
2)将窗口大小改为整个屏幕大小
如下图为代码修改和运行结果:
3)修改窗口大小为其他尺寸
修改代码:
glutInitWindowSize(350,350);
运行结果:
5.背景色的设置
在默认情况下,背景色是黑色
1)将窗口背景设置为白色,如下图:
代码修改:
glClearColor(1.0f,1.0f,1.0f,1.0f);
运行结果:
1)将窗口背景设置为其他颜色,如下图:
代码修改:
glClearColor(7.0,-7.0,5.0,1.0f);
运行结果:(紫背景)
6.基本图形绘制
矩形绘制:
1)在display绘图函数的“glClear(GL_COLOR_BUFFER_BIT);”语句后面增加“glRectf(0,0,1,1);”,运行程序查看效果,代码修改和运行结果如下图:
2)修改矩形的对角坐标,看看有什么变化和问题,运行结果如下图:
注:glRectf函数:画一个矩形,四个参数分别表示了位于对角线(左下到右上)上的两个点的横纵坐标(并且以窗口的中心点为原点,相当于以它为原点建立了一个二维坐标系)
修改代码:
glRectf(-0.8f,-0.8f,0.5f,0.5f);
运行结果:
3)根据给出的函数,试画出直线和三角形等基本图形
(1)直线:
代码修改:
void display(void)
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //设置清屏颜色
glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓存区
glBegin(GL_LINES);
glVertex2f(0,0);
glVertex2f(0.8,0.8);
glEnd();
glFlush(); //用于刷新命令队列和缓存区,使所有尚未被执行的OpenGL命令得到执行
}
运行结果:
(3)三角形:
代码修改:
void display(void)
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //设置清屏颜色
glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓存区
glBegin(GL_TRIANGLES);
glVertex2f(0,0);
glVertex2f(0.5,0.5);
glVertex2f(0.0,0.8);
glEnd();
glFlush(); //用于刷新命令队列和缓存区,使所有尚未被执行的OpenGL命令得到执行
}
运行结果:
7.绘图色的设置
1)将绘制的图形修改成红色
代码修改:
glColor3f(1.0f, 0.0f, 0.0f); //设置为红色
glRectf(-0.1f, -0.1f, -0.2f, -0.2f); //矩形
2)将绘制的不同基本图元设为不同的颜色
代码修改:
glColor3f(0.5f, 0.6f, 0.2f); //设置为草绿色
glBegin(GL_TRIANGLES);
glVertex2f(0.0f,0.0f);
glVertex2f(0.2f, 0.2f);
glVertex2f(0.0f, 0.2f);
glEnd();
运行结果:
8.绘制几何图形
1 )更改标题栏,加上学号、姓名。
2)绘制两个以上基本几何形状。
3 )设置三种颜色。
代码修改:
#include <windows.h>
#include <gl/glut.h>
void display(void)
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //设置清屏颜色
glClear(GL_COLOR_BUFFER_BIT); //刷新颜色缓存区
glColor3f(1.0f, 0.0f, 0.0f); //设置为红色
glRectf(-0.1f, -0.1f, -0.2f, -0.2f); //矩形
//绘制直线
glColor3f(0.0f, 1.0f, 0.0f); //设置为绿色
glBegin(GL_LINES);
glVertex2f(0.0f,0.0f);
glVertex2f(0.3f, -0.2f);
glEnd();
//画三角形,x1、y1、x2、y2、x3、y3为三角形顶点坐标
glColor3f(0.5f, 0.6f, 0.2f); //设置为草绿色
glBegin(GL_TRIANGLES);
glVertex2f(0.0f,0.0f);
glVertex2f(0.2f, 0.2f);
glVertex2f(0.0f, 0.2f);
glEnd();
glFlush(); //用于刷新命令队列和缓存区,使所有尚未被执行的OpenGL命令得到执行
}
int WINAPI wWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
char *argv[] = { "hello"," " };
int argc = 2;
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(350,350);
glutInitWindowPosition((glutGet(GLUT_SCREEN_WIDTH)-640)/2,
(glutGet(GLUT_SCREEN_HEIGHT)-480)/2);
glutCreateWindow("学号 姓名");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
运行结果:
四、思考题
1.默认窗口在屏幕的什么位置?如果要改变窗口在屏幕的位置应该如何处理?如何调整窗口的大小?
答:默认窗口在屏幕的左上角,改变窗口的位置使用glutInitWindowPosition函数,传入目标窗口位置的左上角坐标;调整窗口大小使用glutInitWindowSize函数,传入窗口的长宽。
2.本实验中默认的绘图坐标原点在窗口中的什么位置?
答:在窗口的右上角。
3.如何修改背景颜色和绘图颜色?绘图颜色的顺序和位置有什么要求?
答:修改背景颜色使用glClearColor函数,此函数放在display()中,并且放在glClear()语句前面。绘图颜色修改使用glColor3f函数,放在glBegin()之前。
4.对于“#include <gl/glut.h>”,头文件应当放在哪个文件夹下?文章来源:https://www.toymoban.com/news/detail-789055.html
这答:应当放在D:\vs2010\VC\include\gl\(根据自己的存放位置写)文章来源地址https://www.toymoban.com/news/detail-789055.html
到了这里,关于实验1 OpenGL图形编程入门(visualstudio2010)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!