多边形点画模式
来源:互联网 发布:阿佳妮玛戈皇后知乎 编辑:程序博客网 时间:2024/04/30 15:56
1、void glPolygonMode(GLenum face, GLenum mode);——face指定多边形哪个面为正面(GL_FRONT_AND_BACK/GL_FRONT/GL_BACK);mode指定以哪种方式绘制(GL_POINT点/GL_LINE轮廓/GL_FILL填充)
2、void glFrontFace(GLenum mode);——控制正面是如何决定的;mode为GL_CCW(默认)说明逆时针为正;GL_CW说明顺时针为正
3、剔除多边形的面
void glEnable(GL_CULL_FACE);——启用剔除功能
void glCullFace(GL_FRONT/GL_BACK/GL_FRONT_AND_BACK);——剔除正面、背面、所有面
void glDisable(GL_CULL_FACE);——禁用剔除功能
4、 点画多边形
void glEnable(GL_POLYGON_STIPPLE);——启用点画功能
void glPolygonStipple(const GLubyte *mask);——mask是指向点列表的指针,点用0、1组成的16位表示
void glDisable(GL_POLYGON_STIPPLE);
实例:
#include <GL/glut.h>#include <stdlib.h>void display(void){ GLubyte fly[] = { 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[] = { 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);/* draw one solid, unstippled rectangle, */ /* then two stippled rectangles */ 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 init (void){ glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); }void reshape (int w, int h){ glViewport (0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h);}void keyboard(unsigned char key, int x, int y){ switch (key) { case 27: exit(0); break; }}int main(int argc, char** argv){ glutInit(&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize (350, 150); glutCreateWindow (argv[0]); init (); glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc (keyboard); glutMainLoop(); return 0; }
- 多边形点画模式
- OpenGL学习05_点画模式(点画多边形)
- OpenGL学习05_点画模式(点画多边形)
- 点画多边形(续)
- 根据点画多边形
- 直线点画模式
- 【OpenGL 学习笔记03】点画多边形
- glPolygonStipple 点画多边形——画自己的姓
- OpenGL入门示例6——黑色背景绘制彩色点画多边形
- OpenGL学习04_点画模式(点画线)
- OpenGL学习04_点画模式(点画线)
- 多边形
- 第五章 5-4 多边形填充模式
- 中点画椭圆算法
- 中点画直线算法
- 用点画分隔线
- 鼠标画选顶点画三角形
- 中点画圆法
- 如何将QString转换为char *或者相反
- Hibernate VS iBatis
- 腾讯,你为啥这么傻?(转)
- CF 79C. Beaver
- 思路 -- FuncSys 函数调度系统,欢迎拍砖
- 多边形点画模式
- android service 继承IntentService和Service
- 常见Http状态描述
- android 图片的自动播放
- 感觉应该设个《用户体验》的博客类别了
- 网络流之--最小点权覆盖和最大点权独立集
- js对象的理解(转载)
- ibatis2.0知识点
- 开发一个调试JSP的Eclipse插件