实验一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)替换成以下样本程序:

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

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

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

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

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

5.背景色的设置。
在默认情况下,背景色是黑色。
要求:
1 )将窗口背景设置为白色。

2)将窗口背景设置为其他颜色。

参考函数:

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);”,运行程序查看效果。

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();

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

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 )设置三种颜色。

代码:

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图形编程入门

实验一OpenGL图形编程入门相关推荐

  1. 图形编程入门(VS2010)

    图形编程入门 Visual Studio 2010 其他版本 .NET Framework 4.5 .NET Framework 3.5 .NET Framework 2.0 此主题尚未评级 - 评价 ...

  2. OpenGL图形编程项目实战-李婷婷,清华大学出版社

    项目场景: 学习<OpenGL图形编程项目实战>遇到的问题记录:` 问题描述 第14页,1.7实践案例--绘制茶壶时,出现stdafx.h头文件无法#include,如下所示: 原因分析: ...

  3. java jfm入门_java图形编程

    //将布局管理器设置为边框布局 this.setLayout(new BorderLayout()); 边框布局:将组件按东南西北中的方式进行放置.一个方向只能放一个组件,组件大小岁容 jfm.set ...

  4. 图形编程概念—显卡/GPU是如何工作的?

    计算机显卡在设计之初主要是为了解决实时渲染三维图像的问题,这里的实时指的是能够以很快的速度生成图像,而不是显示播放已经预先录制好的视频.实时渲染对于任何一个游戏都至关重要,因为计算机屏幕显示的图像,都 ...

  5. OpenGL编程入门学习

    OpenGL编程入门学习  非常详细的教程,很适合初学者 本文转自:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html === ...

  6. 《树莓派Python编程入门与实战》——2.3 使用Raspbian图形用户界面

    本节书摘来异步社区<树莓派Python编程入门与实战>一书中的第2章,第2.3节,作者:[美]Richard Blum,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  7. 计算机图形学:实验二——OpenGL绘制基本图形

    1. 实验目的 练习OpenGL基础编程,实现OpenGL的颜色混合和渐变效果. 2. 实验内容和要求 按要求完成以下两个绘图,提交纸质实验报告,同时提交实验报告和代码的电子版. I). 利用Open ...

  8. OpenGL基础图形编程

    一.OpenGL与3D图形世界 1.1.OpenGL使人们进入三维图形世界 我们生活在一个充满三维物体的三维世界中,为了使计算机能精确地再现这些物体,我们必须能在三维空间描绘这些物体.我们又生活在一个 ...

  9. 《Qt图形界面编程入门》课后习题全解

    代码地址 https://github.com/duganlx/QT 说明 以下答案并非来自官方,而是本人自己实现的,若有啥问题,欢迎讨论(^-^) 所基于的书籍为<Qt图形界面编程入门> ...

最新文章

  1. 2009年总结-爱与快乐着
  2. python3的数据类型的有序无序
  3. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?...
  4. 反流氓软件运动为何变了味
  5. python设计模式10-外观模式
  6. 车座自动排水阀行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. scala List入门到熟悉
  8. 7个和尚_一位高僧对世俗问题的7个回答,非常绝妙!
  9. 怎么下载python的各种库_各种Python库安装包下载地址与安装过程详细介绍(Windows版)...
  10. 免费下载百度文库的几款在线工具推荐
  11. DOS编写脚本常用命令整理
  12. 颈部肌肉的锻炼方法?
  13. 台式电脑开机显示蓝屏 检查计算机上的病毒,电脑出现蓝屏是怎么回事
  14. 计算机网络笔记1 计算机网络概述
  15. CSDN会员他到底有什么用?
  16. 门子1200plc485 modbus rtu通讯,55条通讯,几百个数据,1s内完成
  17. vue3-video-play 实现视频播放
  18. redhat 离线安装 docker
  19. Echarts:重写toolbox的还原工具并监听click事件
  20. 韩顺平Java:qq项目离线发送接收消息/文件扩展

热门文章

  1. 在线支付篇(微信)——native方式(付款码支付)
  2. 串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版本V 1.3)
  3. “岁月静好,现世安稳
  4. 实时查看gpu利用率
  5. 精易模块中普通填表初始化失败的解决方案
  6. 使用Fragment兼容Tablet和Handset
  7. carla学习笔记:OpenDRIVE standalone mode
  8. [转载]C/C++头文件一览
  9. 【Django】执行python manage.py makemigrations报错的解决方案
  10. 企业局域网规划与管理