首页 OpenGL程序-输出-学号、姓名、照片等信息。直线、线型、字体程序

OpenGL程序-输出-学号、姓名、照片等信息。直线、线型、字体程序

举报
开通vip

OpenGL程序-输出-学号、姓名、照片等信息。直线、线型、字体程序OpenGL程序-输出-学号、姓名、照片等信息。直线、线型、字体程序作业1姓名班级学号日期一:作业目的及要求:采用OpenGL程序,输出学号、姓名、照片等信息。直线、线型、字体程序。二:理论基础:1.使用GLUT进行窗口管理:(1)与大小有关的glutInitWindowSize(800,600);//用来定义显示窗口的初始化宽度和高度的像素数glutInitWindowPosition(200,200);//显示窗口左上角应该在屏幕左边界向右50个像素、屏幕上边界100像素的位置上。gluOr...

OpenGL程序-输出-学号、姓名、照片等信息。直线、线型、字体程序
OpenGL程序-输出-学号、姓名、照片等信息。直线、线型、字体程序作业1姓名班级学号日期一:作业目的及要求:采用OpenGL程序,输出学号、姓名、照片等信息。直线、线型、字体程序。二:理论基础:1.使用GLUT进行窗口管理:(1)与大小有关的glutInitWindowSize(800,600);//用来定义显示窗口的初始化宽度和高度的像素数glutInitWindowPosition(200,200);//显示窗口左上角应该在屏幕左边界向右50个像素、屏幕上边界100像素的位置上。gluOrth02D(0.0,200.0,0.0,150.0);//这 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示使用正投影将世界坐标系二维矩形区域的内容映射到屏幕上。以上三个概念需要弄清,其中gluOrtho2D是指屏幕区域对应的模型坐标范围,比如横向范围是0到200米,纵向是0到150米,而后面的glutInitWindowSize是指glut的窗口弹出来后相对于你电脑屏幕的位置和大小,单位是像素。(2)窗口颜色设置glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//指出显示窗口使用单个缓存且使用RGB(红绿蓝)颜色模型来设置颜色值glClearColor(1.0,1.0,1.0,0.0)//设置窗口背景颜色为白色,前三个变量为红绿蓝分量,最后一个为调和参数,相当于透明度。glClear(GL_COLOR_BUFFER_BIT);//让赋予窗口的颜色在屏幕上显示。Glcolor3f(1.0,0.0,0.0);//显示场景中各种对象的颜色,左边的简单的设置为红色(3)其他glutInit(&argc,argv);//GLUT初始化函数glutCreateWindow("");//显示窗口创建定一个标题glutDisplayFunc(Display);//将创建的图形的定义传递给GLUT函数glutMainLoop();//创建的窗口及其中的图形内容激活2.输出图元(1)OpenGL画点函数OpenGL中定义的点放在函数glBegin()和glEnd()之间,有函数glBegin()的参数指定绘制图元的类型。在OpenGL中绘制一个点时,点大小的默认值是一个像素。可以用函数glPointSize(GLfloatsize)修改这个值。这个函数采用一个参数来指定画点时以像素为单位的近似直径。但是不是任意大小点都支持,通常使用下面的代码来获取点大小的范围和他们的之间最小的中间值:GLfloatsizes[2];//保存绘制点的尺寸范围GLfloatstep;//保存绘制点尺寸的步长glGetFloatv(GL_POINT_SIZE_RANGE,sizes);glGetFloatv(GL_POINT_SIZE_RANULARITY,&step);在OpenGL程序中,我们常可以利用离散的点来拟合一些常见的曲线,如圆,螺旋线等。(2)OpenGL的画线函数使用模式GL_LINES可以在两点之间画线;有时我们需要在一系列的顶点之间绘制连续直线,此时需要用到GL_LINE_STRIP或GL_LINE_LOOP模式。GL_LINE_STRIP模式可以根据指定的一系列顶点,从一个顶点到另一个顶点用连续的线段画线。特别的,当沿着某条曲线指定一系列靠的很近的点,使用GL_LINE_STRIP模式可以绘制一条曲线。GL_LINE_LOOP模式与GL_LINE_STRIP模式类似,只是会在指定的最后一个顶点与第一个顶点之间画最后一条线。直线的属性包括线宽和线型。在OpenGL中可用voidglLineWidth(GLfloatwidth)指定线宽。可以用下面的代码来获取线宽范围和他们的之间的最小间隔:GLfloatsizes[2];//保存线宽的尺寸范围GLfloatstep;//保存线宽尺寸的最小间隔glGetFloarv(GL_LINE_WIDTH_RANGE,sizes);glGetFloarv(GL_LINE_WIDTH_GRANULARITY,&step);数组sizes中保存了glLineWidth的最小有效值和最大有效值,而变量step将保存线宽之间允许的最小增量。Microsoft的OpenGL实现允许线宽从0.5到10.0,最小增量为0.125.(3)OpenGL的字符生成函数字符指数字、字母、汉字等符号。计算机中字符由一个数字编码唯一标识。“美国信息交换用 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 代码集”简称ASCII码。它是用7位二进制数进行编码表示128个字符汉字编码的国家标准字符集。每个符号由一个区码和一个位码(2字节)共同标识。区分ASCII码与汉字编码,采用字节的最高位来标识GlutBitmapCharacter(front,charater)//c是字符的ASCII码,该函数显示位图字符glutStrokeCharacter(front,charater)//函数显示轮廓字符。三:算法及设计分析算法1:输出学号及名字设计分析输出汉字和英文字符,显示中文和显示英文并无不同,同样是把要显示的字符做成显示列表,然后进行调用。但是有一个问题,英文字母很少,最多只有几百个,为每个字母创建一个显示列表,没有问题。但是汉字有非常多个,如果每个汉字都产生一个显示列表,这是不切实际的。这里还经常涉及到中文乱码的问题,也就是说中文占两个字符,英文占一个字符,当然把两个字符的东西放到一个字符的空间里面会产生截断,自然不能正常显示。在教材当中没有中文字符的输出,只有基本的英文字符输出,因此在网上版本,找到使用了MultiByteToWideChar这个函数的,基本上都没有出现乱码,所以用这个函数。wglUseFontBitmapsW函数是wglUseFontBitmaps函数的宽字符版本,它认为字符都占两个字节。函数分析主要函数作用drawCNString(constchar*str)输出字符程序IsDBCSLeadByte(str[i])判断字符是否为两字节MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,str,-1,wstring,len);将混合字符转化为宽字符,wglUseFontBitmapsW认为两个字节为一个字符selectFont(intsize,intcharset,constchar*face)设置字符的字体Display(void)创建图形的定义glRasterPos2f(-0.8f,0.6f);设置字符的输出位置运行结果算法2:直线线型函数(1)设计分析Opengl中使用图元常量可以得到多种画线的方法,在画线的同时可以对线进行不同的属性设置,线宽属性,线型属性,通过对点的设置,对线性的设置可以得到不同的线段。(2)算法中主要函数分析主要函数作用RenderScene()创建图形的定义glPointSize(curSize)设置点的大小glVertex3f(20.0f,150.0f,0.0f)opengl画点函数glLineStipple(1,0x00ff);设置点划线模式glutReshapeFunc()控制窗口大小范围的函数(3)运行结果附录:程序源代码如下:算法1:输出学号及名字#include#include"glut.h"voiddrawCNString(constchar*str){intlen,i;wchar_t*wstring;HDChDC=wglGetCurrentDC();GLuintlist=glGenLists(1);//计算字符的个数//如果是双字节字符的(比如中文字符),两个字节才算一个字符//否则一个字节算一个字符len=0;for(i=0;str[i]!='\0';++i){if(IsDBCSLeadByte(str[i]))++i;++len;}//将混合字符转化为宽字符wstring=(wchar_t*)malloc((len+1)*sizeof(wchar_t));MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,str,-1,wstring,len);wstring[len]=L'\0';//逐个输出字符for(i=0;i
本文档为【OpenGL程序-输出-学号、姓名、照片等信息。直线、线型、字体程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥10.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
malina5222
暂无简介~
格式:doc
大小:33KB
软件:Word
页数:26
分类:
上传时间:2022-07-11
浏览量:7