没有合适的资源?快使用搜索试试~ 我知道了~
实验一 OpenGL基本图形绘制 实验二 OpenGL三维投影变换 实验三 绘制Bezier曲线 实验四 真实感图形
资源推荐
资源详情
资源评论
实验一 OpenGL 基本图形绘制
实验二 OpenGL 三维投影变换
实验三 绘制 Bezier 曲线
实验四 真实感图形
实验一 OpenGL 基本图形绘制
一、实验目的和要求:
、了解三维图形编程机制以及 三维图形绘制的程序结构;
、通过编程实现简单三维图形的绘制;
、掌握三维图形显示原理。
二、实验内容:
、使用 和 编写一个简单的三维程序。
、建议有能力的学生进一步学习 的复杂功能创建效果更好的三维图形;
三、实验步骤:
、初步了解 的功能以及语法特点;
、下载 包,复制 到 文件夹下,复制
到 ! 文件夹下,复制 " 到 ! 文件夹下;
、创建 工程:选择菜单 # 中的 $ 选项,弹出一个分页的对话框,选中页
%&'( 中的 )''*' 项,然后填入你自己的 %&'(
,如 +,回车即可。 为你创建一个工作区()'&,-),你的项
目 + 就放在这个工作区里;
.、为项目添加文件:为了使用 ,我们需要在项目中加入三个相关的 文
件:、、',这三个文件位于 安装目录下的
目录(如 /0&'&10'00)中。选中菜单 %&'(2
3*+'%&'(23# 项(或用鼠标右键),把这三个文件加入项目,在
# 中会有显示。这三个文件请务必加入,否则编译时会出错。或者将这三
个文件名添加到 %&'(23-23,23(&&4'即可。
点击工具条中 $+5# 按钮,新建一个文本文件,存盘为 + 作为你的
源程序文件,再把它加入到项目中,然后就可以开始编程了;
6、请将下面的程序写入源文件 Test.c;
#include <gl/glut.h>
#include <math.h>
const int n = 60;
const GLfloat R = 0.2f;
const GLfloat Pi = 3.1415926536f;
void myDisplay(void)
{
int i;
glClear(GL_COLOR_BUFFER_BIT);
// glShadeModel(GL_FLAT);
// glShadeModel(GL_SMOOTH);
//点
glPointSize(2.0);
glBegin(GL_POINTS);
glVertex2f(0.0f, 0.0f);
glEnd();
//由闭合折线组成的圆
glBegin(GL_LINE_LOOP);
glColor3f(1.0,1.0,0.0);
for(i=0; i<n; ++i)
glVertex2f(R*cos(2*Pi/n*i), R*sin(2*Pi/n*i));
glEnd();
//由不闭合折线组成的两个三角形构成的六星阵图
glBegin(GL_LINE_STRIP);
glColor3f(1.0,0.0,0.0);
glVertex2f(0.0,0.2);
glVertex2f(0.1732,-0.1);
glVertex2f(-0.1732,-0.1);
glVertex2f(0.0,0.2);
glEnd();
glBegin(GL_LINE_STRIP);
glVertex2f(0.0,-0.2);
glVertex2f(0.1732,0.1);
glVertex2f(-0.1732,0.1);
glVertex2f(0.0,-0.2);
glEnd();
//连续三角形组成的扇形
glBegin(GL_TRIANGLE_FAN);
glVertex2f(0.5,0.5);
glVertex2f(0.5,1.0);
glColor3f(0.8,0.2,0.5);
glVertex2f(0.8,0.9);
glColor3f(0.2,0.5,0.8);
glVertex2f(0.9,0.8);
glColor3f(0.8,0.5,0.2);
glVertex2f(1.0,0.5);
glEnd();
//虚线
glLineWidth(3.0);
glEnable(GL_LINE_STIPPLE);
glLineStipple(2, 0x0F0F);
glBegin(GL_LINES);
glColor3f(0.0,0.0,1.0);
glVertex2f(-0.5f, 1.0f);
glColor3f(1.0,1.0,1.0);
glVertex2f(-0.5f,-1.0f);
glEnd();
//线
glLineWidth(0.5);
glDisable(GL_LINE_STIPPLE);
glBegin(GL_LINES);
glColor3f(1.0,0.0,0.0);
glVertex2f(0.5f, 1.0f);
glColor3f(1.0,1.0,1.0);
glVertex2f(1.0f, 0.5f);
glEnd();
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(0, 0);
glutInitWindowSize(600, 600);
glutCreateWindow("第一个OpenGL程序");
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
/*GL_POINTS 单个顶点集
GL_LINES 多组双顶点线段
GL_POLYGON 单个简单填充凸多边形
GL_TRAINGLES 多组独立填充三角形
GL_QUADS 多组独立填充四边形
GL_LINE_STRIP 不闭合折线
GL_LINE_LOOP 闭合折线
GL_TRAINGLE_STRIP 线型连续填充三角形串
GL_TRAINGLE_FAN 扇形连续填充三角形串
GL_QUAD_STRIP 连续填充四边形串
*/
、修改绘图函数 myDisplay 中的内容,自由发挥并绘制一些简单的三维图形;
7、调试程序并使得效果最好;
!、完成实验报告并提交程序源代码。
剩余15页未读,继续阅读
资源评论
fengjliang2009
- 粉丝: 4
- 资源: 60
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于c++的个人收支管理系统设计
- docker一键安装包
- Screenshot_20240430_144340_com.ss.android.ugc.live.jpg
- 回到山沟沟.mp3
- 基于matlab实现自适应波束形成RLS及LMS算法仿真源程序1.rar
- 基于matlab实现自己编写的基于卡尔曼滤波的利用加速度传感器的计步器,测试数据是传感器放在腰部和手臂 .rar
- 基于matlab实现阵列信号处理,波束形成.rar
- 111111111111111111
- 基于matlab实现计步器编程;对当前的计步器装置的数值算法模拟 .rar
- Mdb学习查看PW;access;mdb;pw;password;patch
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功