实验一OpenGL图形编程入门

这篇具有很好参考价值的文章主要介绍了实验一OpenGL图形编程入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验一OpenGL图形编程入门

一、 实验目的
1.了解和掌握OpenGL的安装。
2.掌握一个简单的基于OpenGL的C++程序结构。
3.掌握Win32程序框架。
4.掌握OpenGL中若干基本图形的绘制。
二、 实验环境
硬件要求:
PC,主流配置,最好为独立显卡,显存512MB以上。
软件环境:
操作系统:Windows 7/Windows 8O
语言开发工具:Microsoft Visual Studio 2010,Visual C++o
程序框架:
Win32应用程序。
本书其他实验的实验环境与此相同,以后不再赘述。
三、 实验要求与内容
要求:将所有实验步骤生成的效果截图拷贝到实验报告文档里备查,并附上相应的代码。 Word文档命名方式为“学号姓名-实验序号-实验名称”。后面的实验与此要求一致。
内容:
1.准备好OpenGL库文件。
•Glut32.dll 路径为 %system root%\ SysWOW64o
•Glut32.1ib 路径为 PATH\libo
•Glut.h 路径为 PATH\Includeo
•system root 为 Windows 7 或 Windows 8 安装路径。
•PATH 为 Visual Studio 2010 的安装路径。
2.建立•一个工程文件,并运行样本程序my firstjprogram.cpp,观看结果。
1 )启动Microsoft Visual Studio 2010,在菜单栏中单击“文件”—“新建” 一 “项目”, 如实验图1-1所示。
2)在“新建项目”对话框中选择Visual C++的Win32项目,然后输入项目名称(例如 lab 1-basis),选择项目的保存位置(或者使用默认保存路径),如实验图1-2所示,单击“确 定”按钮。
3)将工程文件的“源文件”中的C++源文件(labl-basis.cpp)替换成以下样本程序:
实验一OpenGL图形编程入门

以上样本程序的运行结果是创建一个名为“hello”的窗口。

3.认真阅读以上样本程序,理解每个函数的作用,并修改窗口标题,让其显示为“我的 第一个0penGL程序”。
实验一OpenGL图形编程入门

4.窗口的设置。
在默认情况下,窗口的位置出现在屏幕的左上角,大小为300 x 300o

要求:
1 )修改窗口位置,使之处于屏幕正中央。
2)将窗口大小改为整个屏幕大小。
3)修改窗口大小为其他尺寸。
参考函数:

glutlnitWindowPosition(int x, int y);
//为窗口指定初始位置,窗口左上角在屏幕的位置为(x,y)
//如果不写该函数,或者写成"'glutlnitWindowPosition (0,0);"均表示窗口的位置出现在屏幕的左上角 glutlnitWindowSize (int width, int height); 〃设置窗口 大小
//如果不写该函数,表示窗口的大小为默认的300X300
 int sheight = glutGet(GLUT_SCREEN_WIDTH);int swidth = glutGet(GLUT_SCREEN_HEIGHT);
获取屏幕的长度与宽度

实验一OpenGL图形编程入门

5.背景色的设置。
在默认情况下,背景色是黑色。
要求:
1 )将窗口背景设置为白色。
实验一OpenGL图形编程入门

2)将窗口背景设置为其他颜色。
实验一OpenGL图形编程入门

参考函数:

glClearColor(r,g,b,alpha) ;//设置背景色,此函数放在 display()中,并且放在“glClear(GL_ //COLOR BUFFER BIT) ; M 语句的前面

其中r、g、b取值范围是[0,1],可以是浮点数;alpha取值范围为0〜1,在这里其值不起作用,以后再讨论该参数。
例如glClearColor(0,0,0,0)为黑色背景,glClearColor3f(l,l,l,0)为白色背景,其他颜色应 该如何设置请读者思考。
6.基本图形绘制。
绘制函数一般放置在清屏语句

glClear (GL_COLOR_BUFFER_BIT) ;	// 刷新颜色缓存区
和刷新语句
glFlush() ;	//用于刷新命令队列和缓冲区,使所有尚未被执行的OpenGL命令得到执行
之间。

矩形绘制:
1 )在 display 绘图函数的 “glClear(GL_COLOR_BUFFER_BIT);” 语句后面増加 glRecf(0,0,1,1);”,运行程序查看效果。
实验一OpenGL图形编程入门

3)修改矩形的对角坐标,看看有什么变化和问题。
*

glRec(0,0,1,1)参数分别是x1,y1,x2,y2表示矩形中左下角和右上角的坐标。坐标用的是相对窗口位置的坐标,且窗口的中心是坐标系原点,水平向右为X轴正向,竖直向上为Y轴正向。

3)根据给出的函数,试画出直线和三角形等基本图形。

//绘制直线
glBegin(GL_LINES);
glVertex2f(0,0);
glVertex2f(0.8,0.8);
glEnd();

实验一OpenGL图形编程入门

//画三角形,xl、yl、x2、y2, x3、y3为三角形顶点坐标 glBegin(GL_TRIANGLES);
glVertex2f(0,0);
glVertex2f(0.5,0.5);

实验一OpenGL图形编程入门

7.绘图色的设置。
1)将绘制的图形修改成红色。
2)将绘制的不同基本图元设为不同的颜色。

参考函数:

glColor3f (r,g,b) ; //设置绘图色r、g、b取值范围为[0,1],可以为浮点数
例如:
glColor3f (1,0,0); 〃设置为红色
glColor3f (0, 1,0) ; // 设置为绿色
glColor3f (0,0,1) ; // 设置为蓝色

其他绘图颜色应如何设置请读者思考。
8.绘制几何图形。
1 )更改标题栏,加上学号、姓名。
2)绘制两个以上基本几何形状。
3 )设置三种颜色。
实验一OpenGL图形编程入门

代码:

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命令得到执行
}

四、思考题
1.默认窗口位置在屏幕的什么位置?如果要改变窗口在屏幕的位置应该如何处理?如何改变窗口的大小?
2.本实验中默认的绘图坐标原点在窗口中的什么位置?
3.如何修改背景颜色和绘图颜色?绘图颜色的顺序与位置有什么要求?
4.对于“#include<glut.h>”,头文件glut.h放在哪个文件夹下?
5.图形函数的顺序与位置有什么要求?试改变程序中一些图形函数的顺序,看运行结果是否有变化。
答:

1.1)默认窗口位置在屏幕的左上角,函数glutlnitWindowPosition(int x, int y)规定窗口初始位置,窗口左上角在屏幕的位置为(x,y)。
(2)如果不写该函数,或者写成"'glutlnitWindowPosition (0,0);"均表示窗口的位置出现在屏幕的左上角。如果要改变窗口在屏幕的位置应该更改x和y的值。
(3)“glutlnitWindowSize(int width,int height);”用来设置窗口大小。

2.坐标用的是相对窗口位置的坐标,且窗口的中心是坐标系原点,水平向右为X轴正向,竖直向上为Y轴正向,即默认的绘图坐标原点在窗口中的中心位置。

3.1)“glClearColor(r,gz bz alpha);”用来设置清屏颜色,即用来修改背景颜色,“glColor3f(r,g,b);”用来修改绘图颜色。
(2)绘图颜色的应在清屏色之后,画图之前,而且必须放在display()中。

4.“#include<glut.h>,头文件glut.h放在“~:\VS2019\VC\Tools\MSVC\14.29.30133\include\GL”中。

5.图形函数应在清屏颜色之后,否则无法显示,而且须放在display()中。

五、体会
OpenGL库文件在VS2019的安装位置有所改变,同时程序的框架也有所改变,代码需要进行一定的改动才能成功运行,过程有点曲折,在不断的试错中,最终完成实验。但函数的总体功能没有发生较大的改变,在实验中体会很多也收获很多,对于OpenGL编程有了初步的认识,对于之后的学习有了很好地基础。

实验一OpenGL图形编程入门文章来源地址https://www.toymoban.com/news/detail-461235.html

到了这里,关于实验一OpenGL图形编程入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenGL ES】三维图形绘制

    不积跬步,无以至千里;不积小流,无以成江海。要沉下心来,诗和远方的路费真的很贵! 颜色的简单搭配: 不红+不绿+不蓝 = 黑 红+绿+蓝 = 白 红+绿 = 黄 红+蓝 = 紫 绿+蓝 = 青蓝 投影主要分为 正交投影 和 透视投影 两种。 正交投影 没有近大远小的效果,是平行投影,投影

    2023年04月08日
    浏览(38)
  • 【Python入门系列】第八篇:Python中GUI编程和图形界面设计

    Python中的GUI编程是指使用Python语言创建图形用户界面(GUI)的过程。通过GUI,用户可以与程序进行交互,通过按钮、菜单、文本框等控件来操作程序。 Python提供了多个库和框架来实现GUI编程,其中最常用的是Tkinter、wxPython、PyQt和PyGTK等。这些库提供了丰富的控件和功能,使开

    2024年02月07日
    浏览(40)
  • C# GUI编程入门指南:学习如何使用C#创建图形用户界面

    C# GUI编程入门指南:学习如何使用C#创建图形用户界面 在本文中,我们将介绍如何使用C#编写GUI程序。GUI(Graphical User Interface)是一种以图形方式呈现信息和操作功能的界面,它使得用户与计算机更加直观和友好。C#是一种强大的编程语言,它提供了丰富的库和工具来帮助我们

    2024年01月21日
    浏览(42)
  • golang,OpenGL,计算机图形学(三)

    代码仓库 https://github.com/phprao/go-graphic 颜色 光源照射到物体上,一部分颜色被吸收,另一部分无法吸收的被反射到人眼,于是呈现出了颜色。 当我们把光源的颜色与物体的颜色值 相乘 (而不是点乘),所得到的就是这个物体所反射的颜色。由此,我们可以定义物体的颜色为

    2024年02月12日
    浏览(30)
  • 利用OpenGL图形库实现人物动画移动效果

    使用OpenGL库实现人物动画移动效果需要涉及到更复杂的图形编程和事件处理。以下是一个简单的例子,使用OpenGL和GLUT库实现人物的基本动画移动效果。 确保你已经安装了OpenGL和GLUT。你可以使用包管理器或者从官方网站下载并安装。 一、如果你已经安装过了OpenGL和GLUT可以直

    2024年01月21日
    浏览(30)
  • 【计算机图形学】OpenGL递归实现光线追踪

    计算机图形学课程设计:基于面向对象的光线跟踪算法设计与实现 目录 一、前言 二、项目实现与说明 1. 数据结构设计 1.1 光线 Ray 1.2 材质 Material 1.3 光照 Light 1.4 相机 Camera 1.5 球体Sphere 1.6 场景Scene 2. 算法实现 2.1 光线追踪算法原理与步骤 2.2 计算观察光线 2.3 光线与物体(球

    2024年02月08日
    浏览(32)
  • [QT编程系列-3]:C++图形用户界面编程,QT框架快速入门培训 - 2- QT程序的运行框架:HelloWorld、常见控件、对象树原理

    目录 2. QT程序的运行框架 2.1 Hello World程序框架 2.2 QT Designer初识 2.3 用QT Designer设计用户登录界 上述示例代码中,首先根据应用程序的需求使用 QCoreApplication 或 QApplication 定义 app 对象。如果你的应用程序需要图形界面,则使用 QApplication,否则使用 QCoreApplication。然后,你可以

    2024年02月15日
    浏览(42)
  • [QT编程系列-7]:C++图形用户界面编程,QT框架快速入门培训 - 3- QT窗体设计 - 自定义工具栏、状态栏、快捷键、图标

    目录 3. QT窗体设计 3.2 自定义工具栏 3.2.1 目标 3.2.2 实现过程 3.2 自定义状态栏 3.2.1  目标 3.2.2  过程 3.3 自定义动作快捷键 3.4 自定义图标 在Qt中,ToolBar(工具栏)是一种常见的GUI元素,用于提供应用程序的常用工具按钮和操作。工具栏通常包含一系列图标按钮,用于执

    2024年02月15日
    浏览(40)
  • 【计算机图形学 】扫描线多边形填充算法 | OpenGL+鼠标交互

    传送门 实现多边形扫描线填充算法,并和鼠标进行交互。 具体原理略过,会贴上完整代码,可直接运行。 环境: vs2019,OpenGL的库(可以搜索如何用vs使用OpenGL的库,可以使用vs自带的插件或者其他方法,很方便) 要点: 1.NET和AET的创建,改动 2.改变鼠标点击和鼠标拖拽的响应

    2023年04月08日
    浏览(39)
  • 计算机图形学与opengl C++版 学习笔记 第11章 参数曲面

    在20世纪50年代和60年代在雷诺公司工作期间,皮埃尔·贝塞尔(Pierre Bézier)开发了用于设计汽车车身的软件系统。他的程序利用了Paul de Casteljau之前开发的数学方程组,后者曾为竞争对手雪铁龙汽车制造商[BE72,DC63]工作。de Casteljau方程仅使用几个标量参数描述曲线,同时使用

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包