一.直线的点画模式:即并不完全填充所有像素来画一条直线,而是用点画的形式,间隔地画一条直线

首先启用点画模式:

glEnable(GL_LINE_STIPPLE);

然后自定义创建自己的点画模式

glLineStipple(GLlint factor,GLushort pattern);

其中第一个参数factor为乘法因子,第二个参数pattern为自定义的点画模式:一个16位的值,每个位表示线段的一部分状态为打开或者关闭,采用16进制,例如:0x5555

直线点画的实例程序:

// STIPPLE.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<GL\glut.h>
void Init()
{
glClearColor(0.0f,0.0f,0.0f,0.0f); } void MyDisplay()
{
glClear(GL_COLOR_BUFFER_BIT); GLint factor=;
GLushort pattern=0x5555;
GLfloat y;
glEnable(GL_LINE_STIPPLE); glColor3f(0.0,1.0f,0.0f); for ( y = -80.0f; y < 80.0f; y+=20.0f)
{
glLineStipple(factor,pattern);
glBegin(GL_LINES);
glVertex2f(-80.0f,y);
glVertex2f(80.0,y);
factor++;
glEnd(); } glutSwapBuffers(); }
void ChangeSize(int w,int h)
{
if (h==)
{
h=;
}
glViewport(,,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if (w<=h)
{
gluOrtho2D(-100.0,100.0,-100.0*(GLfloat)h/(GLfloat)w,100.0*(GLfloat)h/(GLfloat)w);
}
else
{
gluOrtho2D(-100.0*(GLfloat)w/(GLfloat)h,100.0*(GLfloat)w/(GLfloat)h,-100.0,100.0);
}
glMatrixMode(GL_MODELVIEW);
glLoadIdentity(); }
int main(int argc, char ** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
glutInitWindowPosition(,);
glutInitWindowSize(,);
glutCreateWindow("Line_STIPPLE"); Init();
glutDisplayFunc(MyDisplay);
glutReshapeFunc(ChangeSize); glutMainLoop(); }

绘制图形与3D增强技巧(二)----直线图元之点画的更多相关文章

  1. 绘制图形与3D增强技巧(二)----直线图元

    一. glBegin(GL_LINES); glend(); 二.线带和线环 glBegin(GL_LINE_STRIP); glend(); glBegin(GL_LINE_LOOP); glend ...

  2. 绘制图形与3D增强技巧(四)----多边形图元及其点画模式

    1.四边形图元 glBegin(GL_QUADS); glend(); 2.通用多边形 glBegin(GL_POLYGONS); glend(); 3.多边形点画模式 glenable(GL_POL ...

  3. 绘制图形与3D增强技巧(五)----多边形图元的使用及其他

    1.注意多边形图元中的多边形只能是平面的,而且必须为凸多边形,且多边形的边不能弯曲 2.细分和边界,可以人为设置边界边和非边界边 glEdgeFlag(true)//接下来所有点均为边界边起点 glE ...

  4. 绘制图形与3D增强技巧(三)----三角形图元TRANGLE

    1. glBegin(GL_TRANGLES); ........ glend(); 2.多边形的环绕方向:逆时针和顺时针的正反面 GLFront(GL_CCW)和GLFront(GL_CW); 3. ...

  5. 绘制图形与3D增强技巧(一)----点图元

    1.图元 1.点图元 glBegin(GL_POINTS); glend(); 程序:点图元的应用 #include "stdafx.h" #include<stdio.h& ...

  6. 【canvas学习笔记二】绘制图形

    上一篇我们已经讲述了canvas的基本用法,学会了构建canvas环境.现在我们就来学习绘制一些基本图形. 坐标 canvas的坐标原点在左上角,从左到右X轴坐标增加,从上到下Y轴坐标增加.坐标的一个 ...

  7. OpenGL学习进程(4)第二课:绘制图形

    本节是OpenGL学习的第二个课时,下面介绍如何用点和线来绘制图形:     (1)用点的坐标来绘制矩形: #include <GL/glut.h> void display(void) ...

  8. 在Android中使用OpenGL ES进行开发第(三)节:绘制图形

    一.前期基础知识储备笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点: ①OpenGL ES是什么?与OpenGL的关系是什么?——概念部分 ②使用OpenGLES绘制2D ...

  9. html5 canvas 笔记一(基本用法与绘制图形)

    <canvas> 元素 <canvas id="tutorial" width="150" height="150"> ...

随机推荐

  1. ES5特性之Object.freeze

    Object.freeze方法比Object.seal方法更严格,不仅不能扩展新对象和不可重新配置属性的特性,还不能改变对象属性的值writable(不可写)

  2. History 对象

    History 对象 History 对象包含用户(在浏览器窗口中)访问过的 URL. History 对象是 window 对象的一部分,可通过 window.history 属性对其进行访问. 注 ...

  3. js的client、scroll、offset详解与兼容性

    clientWidth:可视区宽说明:样式宽+padding参考:js的client详解 scrollTop : 滚动条滚动距离说明:chrome下他会以为滚动条是文档元素的,所以需要做兼容:var ...

  4. 报错问题:InnoDB: Error: log file ./ib_logfile0 is of different size

    InnoDB: Error: log file ./ib_logfile0 is of different size bytesInnoDB: than specified in the .cnf f ...

  5. zlog学习笔记(level)

    level.h /** * */ #ifndef __zlog_level_h #define __zlog_level_h #include "stdio.h" #include ...

  6. consumer group

    Kafka消费组(consumer group)一直以来都想写一点关于kafka consumer的东西,特别是关于新版consumer的中文资料很少.最近Kafka社区邮件组已经在讨论是否应该正式使 ...

  7. font和lineheight冲突。

    font:14px bold arial; line-height:40px; 这样写font的话line-height不会有效,只要把font拆分写就有效,chrome ie ff下都是.

  8. 用C++和shell获取本机CPU、网卡IO、内存、磁盘等的基本信息

    用C++和shell获取本机CPU.网卡.内存.磁盘等的基本信息: 由于对C++相关的函数没多少了解,但是觉得用shell反而相对简单一些: 一.shell脚本,用来辅助C++获取主机的资源使用信息 ...

  9. weblogic启动失败:Could not obtain the localhost address 解决办法

    linux下weblogic启动如果出现这个错误,多半是hosts文件不对 1.先输入hostname,查看本机计算机名(比如:server123) 2.sudo vi /etc/hosts 编辑ho ...

  10. PHP中WEB典型应用技术

    主要讲5个方面: PHP与web页面的交互:表单传值,文件的上传与下载 http协议 PHP的会话技术:cookie和session PHP的图像技术:GD库,图像的常见的制作和操作,验证码,二维码, ...