实验1 OpenGL图形编程入门(visualstudio2010)

在这里插入图片描述

一、实验目的

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>”,头文件应当放在哪个文件夹下?

这答:应当放在D:\vs2010\VC\include\gl\(根据自己的存放位置写)

计算机图形实验OPENGL可视化 计算机图形实验 opengl 三个实验 附有具体代码 跟VC6一样的 一、下载并安装glut库 opengl的glut库 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。 Windows环境下的GLUT下载地址:(大小约为150k) http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip Windows环境下安装GLUT的步骤: 1、将下载的压缩包解开,将得到5个文件 2、在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(Program Files\Microsoft Visual Studio\VC98\Include\GL文件夹”)。把解压得到的glut.h放到这个文件夹。 3、把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(Program Files\Microsoft Visual Studio\VC98\lib”文件夹)。 4、把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32) 二、vc工程配置: 1)创建一个工程。glut 是一个console project ,你创建的时候必须创建console 以对应 . 2)链接OpenGL libraries。在Visual C++中先单击Project,再单击Settings,再找到Link单击, 在“分类”(Category)组合框里选择“输出”(output) ,再在“入口点”(Entry-point symbol)文本框里键入“mainCRTStartup” ,对一个现有的控制台应用程序,有一个简单的办法把它转换成Win32应用程序,这样可以摆脱那个命令行窗口。 3)单击Project Settings中的C/C++标签,将Preprocessor definitions 中的_CONSOLE改为__WINDOWS。最后单击OK。 增加下面的文件到“对象/库模块" (Object/library/modules):OpenGL32.lib glut32.lib glu32.lib (有时候不需要glut32.lib) 4)然后在stdafx.h文件中加入 #include #include #include #include #include 注意:#include 是需要的,不引入的话有时会报错。 完成后,就可以编写你自己的程序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊hii

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值