为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

实验3 OpenGL基本图元绘制

2019-05-09 10页 doc 27KB 23阅读

用户头像

is_614050

暂无简介

举报
实验3 OpenGL基本图元绘制实验3、OpenGL基本图元绘制 系别:计算机学院                          专业班级:10信科2班 姓名:                                  学号: 实验日期:2013-5-10                        实验报告日期:2013-5-10 一、 实验目的 1熟悉VC6.0开发平台; 2熟悉OpenGL开发库; 二、 实验内容: 1. 在同一个窗口内绘制以下图元: ? 用不同颜色绘制大小从1到5的5个点; ? 用不同颜色绘制宽度为1、3、5的三条直线...
实验3 OpenGL基本图元绘制
实验3、OpenGL基本图元绘制 系别:计算机学院                          专业班级:10信科2班 姓名:                                  学号: 实验日期:2013-5-10                        实验日期:2013-5-10 一、 实验目的 1熟悉VC6.0开发平台; 2熟悉OpenGL开发库; 二、 实验内容: 1. 在同一个窗口内绘制以下图元: ? 用不同颜色绘制大小从1到5的5个点; ? 用不同颜色绘制宽度为1、3、5的三条直线段; ? 绘制一条包含5个顶点的折线段; ? 绘制一个三角形,三个顶点颜色各不相同,三角形内部用平滑方式进行填充; ? 绘制一个六边形; 2.  ,不使用反混淆绘制宽度为5的直线;启用反混淆后在不同位置绘制相同的直线,比较两者异同。 三、 一个OpenGL实例 1.程序中有关画图的代码: void DrawGLScene(GLvoid)    // 此函数完成图形绘制 { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    // 清除颜色缓冲区和深度缓冲区 glLoadIdentity();        // 重置当前模型视图矩阵 glTranslatef(-1.5f,0.0f,0.0f);        // 向左平移50个单位 glBegin(GL_TRIANGLES);    // 绘制三角形 glColor3f(1.0f,0.0f,0.0f);        //画笔设置为红色 glVertex3f( 0.0f, 1.0f, 0.0f);                    glColor3f(0.0f,1.0f,0.0f);                        // 设置为绿色 glVertex3f(-1.0f,-1.0f, 0.0f);                            glColor3f(0.0f,0.0f,1.0f);                        //设置为蓝色 glVertex3f( 1.0f,-1.0f, 0.0f);                    glEnd();                                            // 完成三角形的绘制 glTranslatef(3.0f,0.0f,0.0f);                        // 向右平移3个单位 glColor3f(0.0f,1.0f,1.0f);                            // 设为青色 glBegin(GL_QUADS);                                    // 画四边形 glVertex3f(-1.0f, 1.0f, 0.0f);                    glVertex3f( 1.0f, 1.0f, 0.0f);                    glVertex3f( 1.0f,-1.0f, 0.0f);                    glVertex3f(-1.0f,-1.0f, 0.0f);                    /    glEnd();                                            //完成四边形绘制 glFlush();                                        } 四、 实验报告内容 1程序源码; 2对主要画图函数的说明(函数的功能,参数等)。 // 图形.cpp : Defines the entry point for the console application. // #include #include #include #include #define MAX 10^6; //如果需要记录鼠标点的位置,就定义全局变量来保存 struct Point {int x, y;}; Point pt[2]; int pointNum=0;//标记点号,0表示线段起点,1表示线段中点 void MyDrawGLScene()    // 此函数完成图形绘制 { int i; float pSizes[5]={1.0f,2.0f,3.0f,4.0f,5.0f};  //设定五个点的大小 float lWidth[5]={1.0f,2.0f,3.0f,4.0f,5.0f};  //设定五条直线的宽度 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    // 清除颜色缓冲区和深度缓冲区 glLoadIdentity();        // 重置当前模型视图矩阵 glTranslatef(-1.8f,-0.1f,0.0f);        // 向左平移50个单位 // 绘制五个大小不同的的点 glEnable(GL_POINT_SMOOTH);      //开启反混淆 for( i=0;i<5;i++){// 绘制五个大小不同的的点 glPointSize(pSizes[i]); glTranslatef(0.1f,-0.0f,0.0f);        // 向右平移50个单位 glBegin(GL_POINTS);                glColor3f(1.0f,0.0f,0.0f);        //画笔设置为红色 glVertex2f(1.0f,1.0f); glEnd(); } //绘制五条不同宽度的直线 glTranslatef(-0.5f,-0.1f,0.0f);        // 向左平移50个单位 for(i=0;i<5;i++)  //绘制五条不同宽度的直线 { glTranslatef(0.0f,-0.1f,0.0f); glLineWidth(lWidth[i]);  //设定直线的宽度 glBegin(GL_LINES); glColor3f(0.0f,1.0f,0.0f);        //画笔设置为绿色 glVertex2f(1.0f,1.0f); glVertex2f(2.0f,1.0f); glEnd(); } //画五个定点的折线 glTranslatef(0.0f,-0.2f,0.0f);        // 向左平移50个单位 glColor3f(0.0f,0.0f,1.0f);        //画笔设置为蓝色 glLineWidth(3.0f);          //设定直线的宽度 glBegin(GL_LINE_STRIP);                  //画五个定点的折线 glVertex2f(1.0f,1.0f);  glVertex2f(1.2f,1.1f); glVertex2f(1.4f,1.0f); glVertex2f(1.6f,1.1f); glVertex2f(1.8f,1.0f); glEnd(); // 绘制三角形 glTranslatef(1.5f,0.7f,0.0f);        // 向左平移50个单位 glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);    //选择三角形的光栅化模式为多边形内部被填充,选用参数GL_FILL glEnable(GL_POLYGON_STIPPLE);        //平滑填充三角形 glBegin(GL_TRIANGLES);    glColor3f(1.0f,0.0f,0.0f);        //画笔设置为红色 glVertex3f( 0.0f, 0.15f, 0.0f);                    glColor3f(0.0f,0.5f,0.0f);                        // 设置为绿色 glVertex3f(-0.15f,-0.15f, 0.0f);                        glColor3f(0.0f,0.0f,1.0f);                        //设置为蓝色 glVertex3f(0.15f,-0.15f, 0.0f);                glEnd();        // 完成三角形的绘制 // 画正六形 glTranslatef(0.5f,0.0f,0.0f);                        // 向右平移0.5个单位 glColor3f(0.0f,1.0f,1.0f);                            // 设为青色 glBegin(GL_POLYGON);                                    glVertex3f(-0.2f, 0.0f, 0.0f);                    glVertex3f(-0.1f, 0.1732f, 0.0f);                    glVertex3f( 0.1f,0.1732f, 0.0f);                    glVertex3f(0.2f,0.0f, 0.0f); glVertex3f(0.1f,-0.1732f, 0.0f); glVertex3f(-0.1f,-0.1732f, 0.0f); glEnd();                                            //完成正六边形形绘制 //使用反混淆绘制宽度为5的直线 glTranslatef(-0.4f,-0.3f,0.0f);                        // 向下平移0.3个单位 glLineWidth(5.0f);                                  //设定直线的宽度为5 glColor3f(0.3f,0.5f,0.9f);        //画笔设置为紫色 glEnable(GL_LINE_SMOOTH); glBegin(GL_LINES);                                  //使用反混淆绘制宽度为5的直线 glVertex3f(-0.5f, -0.1f, 0.0f); glVertex3f(0.5f, 0.1f, 0.0f); glEnd(); //不适用反混淆方式绘制宽度为5的直线 glDisable(GL_LINE_SMOOTH);      //关闭反混淆 glBegin(GL_LINES);                                  //不适用反混淆方式绘制宽度为5的直线 glVertex3f(-0.1f, -0.1f, 0.0f); glVertex3f(0.9f, 0.1f, 0.0f); glEnd(); glFlush();                                    } void myDisplay() { glClear(GL_COLOR_BUFFER_BIT);//画图之前先设置画图区的背景色 glColor3f (1.0f, 0.0f, 0.0f);//设置前景色(相当于画笔颜色) LARGE_INTEGER Freq; LARGE_INTEGER start; LARGE_INTEGER end; QueryPerformanceFrequency(&Freq); // 获取时钟周期 if(pointNum == 2)    { QueryPerformanceCounter(&start); // 获取时钟计数 MyDrawGLScene(); QueryPerformanceCounter(&end); 继续阅读
/
本文档为【实验3 OpenGL基本图元绘制】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索