OPENGL填充区属性函数(一)
来源:互联网 发布:vb进度条控件源码 编辑:程序博客网 时间:2024/04/28 16:27
OPENGL填充区属性之——————
OPENGL填充图案函数
首先,还是配置好环境。
默认时,凸多边形使用当前颜色设定显示成一个实心颜色区域。为了用OPENGL的图案填充一个多变形,我们可以使用32*32位的掩模。填充图案使用OPENGL数据类型GLubyte以无符号字节进行描述,如同在glBtmap函数中一样。
建立掩模后,将其用做填充图案,可用glPloygonStipple()函数来填充,然后激活子程序,最后再关闭图案填充。代码如下:
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
void display(void)
{
GLubyte fly[] = { //第二个矩形点画模式的mask值
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60,
0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20,
0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20,
0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC,
0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30,
0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0,
0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0,
0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30,
0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08,
0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08,
0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08
};
GLubyte halftone[] = { //第三个矩形点画模式的mask值
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55
};
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glRectf(25.0, 25.0, 125.0, 125.0);
glEnable(GL_POLYGON_STIPPLE);
glPolygonStipple (fly);
glRectf(125.0, 25.0, 225.0, 125.0);
glPolygonStipple (halftone);
glRectf(225.0, 25.0, 325.0, 125.0);
glDisable(GL_POLYGON_STIPPLE);
glFlush ();
}
void myinit (void)
{
glClearColor (0.0, 0.0, 0.0, 1.0);
glMatrixMode (GL_PROJECTION); // Set projection parameters.
gluOrtho2D (0.0, 400.0, 0.0, 150.0);
//glShadeModel (GL_FLAT);
}
int main(int argc, char** argv)
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInit (&argc, argv);
//glutInitPosition
glutInitWindowPosition(0, 0);
glutInitWindowSize (350, 150);
glutCreateWindow ("An Example OpenGL Program");
//glutInitWindow (argv[0]);
myinit();
glutDisplayFunc(display);
glutMainLoop();
}
执行结果为:
- OPENGL填充区属性函数(一)
- OpenGL从1.0开始--填充区属性
- 计算机图形学(三)_图元的属性_14_ OpenGL填充区属性函数(上)
- 计算机图形学(三)_图元的属性_14_ OpenGL填充区属性函数(下)
- 计算机图形学(三)_图元的属性_9_ 填充区属性
- openGL函数一
- 填充算法(一)递归填充算法
- OpenGL: 填充非凸多边形 (转)
- OpenGL填充非凸多边形(网格化)
- OpenGL的填充属性函数之线框图方法
- OpenGL绘制填充五角星
- OpenGL:填充非凸多边形
- OpenGL: 填充非凸多边形
- openGL多边形内填充
- openGL 填充样式
- opengl 种子填充算法
- openGL-边界填充
- OpenGL中一些函数的整理(一)
- Cocos2d的基本概念
- USB2.0接口差分信号线设计
- /var/log/secure不记录日志
- 如何Lotus iNotes Lotus Domino Sync Manager和使用中做邮件归档
- .net连接MySql:Unable to connect to any of the specified MySQL hosts
- OPENGL填充区属性函数(一)
- 性能自动化测试方略
- linux设备驱动归纳总结(一):内核的相关基础概念
- LambdaProbe 监控Tomcat使用详解
- DNS负载均衡与CDN内容分发技术
- Android线程优先级设置方法
- linux设备驱动归纳总结(二):模块的相关基础概念
- LightSwitch登录界面如何设置背景
- 如何调试MFC中的内存泄漏