试用OpenGL实现用黑白相间的棋盘图案填充图形
2013-06-16 21:54
337 查看
计算机图形学第五次实验
试用OpenGL实现用黑白相间的棋盘图案填充图形
一、 实验目的
学会在OpenGL中写程序;
学会用OpenGL实现用黑白相间的棋盘图案填充多边形。
二、 实验内容用OpenGL实现黑白相间的棋盘图案填充多边形
三、 实验步骤
相关算法及其原理
多边形图案填充,需要使用函数void glPolygonStipple(const GLubyte *mask);指定用于填充多边形的模板位图。其中,mask是一个指向32x32位图的指针,该位图由0和1组成掩码,1表示绘制多边形对应像素,0表示不绘制。模板位图创建时,参数mask通常依照从左至右,然后从下至上的顺序使用单个字节,而每个字节都是从最高位开始使用的。然后调用函数glEnable(GL_POLYGON_STIPPLE)
四,实验运行结果
实验心得:
在实验中,我以为32*32的模板位图来填充不够好,直接又加了一些多余的代码,没想到无论我加多少代码,数组的容量毕竟是有限的,仍旧是以32*32来显示,看来以后还得好好看书啊.
五:附录
源程序代码
试用OpenGL实现用黑白相间的棋盘图案填充图形
一、 实验目的
学会在OpenGL中写程序;
学会用OpenGL实现用黑白相间的棋盘图案填充多边形。
二、 实验内容用OpenGL实现黑白相间的棋盘图案填充多边形
三、 实验步骤
相关算法及其原理
多边形图案填充,需要使用函数void glPolygonStipple(const GLubyte *mask);指定用于填充多边形的模板位图。其中,mask是一个指向32x32位图的指针,该位图由0和1组成掩码,1表示绘制多边形对应像素,0表示不绘制。模板位图创建时,参数mask通常依照从左至右,然后从下至上的顺序使用单个字节,而每个字节都是从最高位开始使用的。然后调用函数glEnable(GL_POLYGON_STIPPLE)
四,实验运行结果
实验心得:
在实验中,我以为32*32的模板位图来填充不够好,直接又加了一些多余的代码,没想到无论我加多少代码,数组的容量毕竟是有限的,仍旧是以32*32来显示,看来以后还得好好看书啊.
五:附录
源程序代码
#include<glut.h> int n=0; float a0=200,b0=200,a1=400,b1=200,a2=400,b2=400,a3=200,b3=400; int winWidth=600,winHeight=500; void Initial(void) { glClearColor(1.0f,1.0f,1.0f,1.0f); } void ChangeSize(int w,int h) { winWidth=600,winHeight=550; glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0,winWidth,0.0,winHeight); } void Display() { glColor3f(1.0f,1.0f,1.0f); GLubyte fly[]= { 0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff, 0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff, 0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff, 0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff, 0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff, 0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff, 0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff, 0x00,0x00,0xff,0xff,0x00,0x00,0xff,0xff, 0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00, 0xff,0xff,0x00,0x00,0xff,0xff,0x00,0x00, }; glEnable(GL_POLYGON_STIPPLE); glPolygonStipple(fly); glRectf(5,5,800,800); glutSwapBuffers(); } int main(int argc,char *argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB); glutInitWindowSize(400,300); glutInitWindowPosition(100,100); glutCreateWindow("2008082269-hezhilong"); glutDisplayFunc(Display); glutReshapeFunc(ChangeSize); Initial(); glutMainLoop(); return 0; }
相关文章推荐
- 用openGL实现用黑白相间的棋盘图案填充多边形
- VS2008集成QT的OpenGL开发(实现二维图形的旋转)
- Android贝塞尔曲线实现填充不规则图形并随手指运动
- 实现图形Qt学习:三维绘图之OpenGL和Qt的结合
- 几种黑白相间的棋盘实现方法
- Gimp 实现文字图案填充
- opengl实现直线扫描算法和区域填充算法
- 填充图形属性&nbsp;计算机图形学&nbsp;Opengl
- OpenGL的填充属性函数之纹理和插值图案
- 计算机图形学Opengl实现二维图形的…
- 使用cuda+opengl图形互操作性实现MPR
- 计算机图形学Opengl实现二维图形的…
- 利用VC+OpenGL实现几种特殊图形效果
- opengl 实现一个图形动 一个图形不动
- 扫描线多边形填充算法及其OpenGL实现
- 残缺棋盘 android实现颜色填充
- 利用VC+OpenGL实现几种特殊图形效果
- 【循序渐进学图形学之】Bresenham画线算法详解及其OpenGL编程实现
- Open gl 的不规则图形的4联通种子递归填充和扫描线种子递归填充算法实现
- MFC与QT图形生数据图案填充处理