一.

glBegin(GL_LINES);

glend();

二.线带和线环

glBegin(GL_LINE_STRIP);

glend();

glBegin(GL_LINE_LOOP);

glend();

三.设置直线宽度

glLineWidth(GLfloat width);

四.获得直线宽度范围和增量

GLfloat sizes[2];

GLfloat add;

glGetFloatv(GL_LINE_WIDTH_RANGE,sizes);

glGetFloatv(GL_LINE_WIDTH_GRANULARITY,&add);

直线示范例程序

  1. /
  2.  
  3. #include "stdafx.h"
  4. #include<GL\glut.h>
  5. #include<math.h>
  6. #define PI 3.14
  7.  
  8. GLfloat xRot=0.0f;
  9. GLfloat yRot=0.0f;
  10. void Init()
  11. {
  12. glClearColor(0.0,0.0,0.0,0.0);
  13.  
  14. }
  15. void ChangeSize(int w,int h)
  16. {
  17. glViewport(,,w,h);
  18. glMatrixMode(GL_PROJECTION);
  19. glLoadIdentity();
  20. GLfloat aspect=w/h;
  21. if (w<=h)
  22. {
  23. glOrtho(-100.0,100.0,-100.0/aspect,100.0/aspect,-100.0,100.0);
  24. }
  25. else
  26. {
  27. glOrtho(-100.0*aspect,100.0*aspect,-100.0,100.0,-100.0,100.0);
  28. }
  29. glMatrixMode(GL_MODELVIEW);
  30. glLoadIdentity();
  31.  
  32. }
  33.  
  34. void Mydisplay()
  35. {
  36. GLfloat x,y,angle,z=0.0f;
  37. GLfloat sizes[];
  38. glColor3f(0.0f,1.0f,0.0f);
  39. glClear(GL_COLOR_BUFFER_BIT);
  40. glPushMatrix();
  41. glRotatef(xRot,1.0,0.0,0.0);
  42. glRotatef(yRot,0.0,1.0,0.0);
  43.  
  44. for (angle = 0.0f; angle <*PI; angle+=0.1f)
  45. {
  46.  
  47. glBegin(GL_LINES);
  48. x=50.0f*cos(angle);
  49. y=50.0f*sin(angle);
  50. glVertex3f(x,y,z);
  51. x=50.0f*cos(angle+PI);
  52. y=50.0f*sin(angle+PI);
  53. glVertex3f(x,y,z);
  54. glEnd();
  55. }
  56.  
  57. glPopMatrix();
  58. glutSwapBuffers();
  59.  
  60. }
  61. void Mykeys(int key,int x,int y)
  62. {
  63. if (key==GLUT_KEY_LEFT)
  64. {
  65. yRot-=5.0f;
  66. }
  67. if (key==GLUT_KEY_RIGHT)
  68. {
  69. yRot+=5.0f;
  70. }
  71. if (key==GLUT_KEY_UP)
  72. {
  73. xRot-=5.0f;
  74. }
  75. if (key==GLUT_KEY_DOWN)
  76. {
  77. xRot+=5.0f;
  78. }
  79. if (xRot>355.0f)
  80. {
  81. xRot=0.0f;
  82. }
  83. if (xRot<=-5.0f)
  84. {
  85. xRot=355.0f;
  86. }
  87. if (yRot>355.0f)
  88. {
  89. yRot=0.0f;
  90. }
  91. if (yRot<=-5.0f)
  92. {
  93. yRot=355.0f;
  94. }
  95.  
  96. glutPostRedisplay();
  97.  
  98. }
  99. int main(int argc,char ** argv)
  100. {
  101.  
  102. glutInit(&argc,argv);
  103. glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
  104.  
  105. glutInitWindowPosition(,);
  106. glutInitWindowSize(,);
  107. glutCreateWindow("Points");
  108.  
  109. Init();
  110. glutDisplayFunc(Mydisplay);
  111. glutReshapeFunc(ChangeSize);
  112. glutSpecialFunc(Mykeys);
  113. glutMainLoop();
  114.  
  115. }

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

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

    一.直线的点画模式:即并不完全填充所有像素来画一条直线,而是用点画的形式,间隔地画一条直线 首先启用点画模式: glEnable(GL_LINE_STIPPLE); 然后自定义创建自己的点画模式 gl ...

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

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

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

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

  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. TRIM函数

    Trim() 删除字符串首尾的空白(可以首尾一起,也可以指定首或尾,取决于控制参数),但会保留字符串内部作为词与词之间分隔的空格.

  2. HTML 学习笔记(图像)

    HTML 图像 图像标签(<img>)和源属性(Src) 在HTML中,图像由<img>标签定义. <img>是空标签,意思是说,他只包含属性,并且没有闭合标签 要 ...

  3. Alpha版本发布说明

    软件发布的同时,在团队博客上写一个发布说明     ▪ 列出这一版本的新功能     ▪ 这一版本修复的缺陷     ▪ 对运行环境的要求     ▪ 安装方法     ▪ 描述系统已知的问题和限制 ...

  4. web 前端常用组件【01】Pagination 分页

    分页组件几乎是一般网站都会涉及到的组件,网上有很多这样的插件,自己挑来跳去选择了这一款. 官方Demo网址:http://mricle.com/JqueryPagination 功能强大,可扩展性比较 ...

  5. Python2.5-原理之模块

    此部分来自于<Python学习手册>第五部分 一.模块(21章) 模块是最高级别的程序组织单元,它将程序代码和数据封装起来以便重用..模块往往对应于python程序文件.每个文件就是一个模 ...

  6. 闲扯 『 document.write 』

    初春的晚上,闲来无事,聊聊 document.write 方法. document.write 使用方式非常简单,把 "字符串化"(不好意思,这可能是我自己创造的名词)的 html ...

  7. 关于lazyload插件的一些笔记

    Lazy Load Plugin for jQuery 需要引入 jQuery,兼容各种 IE,适合 PC 端使用.详细 API 可以参考 http://www.appelsiini.net/proj ...

  8. 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(五)框架及Web项目的组件化

    一.组件化印象 1.先给大家看一张截图 如果我告诉大家,这就是一个web管理系统发布后的所有内容,你们会不会觉得太简洁了,只有一个web.config.一个Global.asax文件,其它的都是dll ...

  9. 如何快速从一个Storage Account拷贝到另一个账号

    当您有两个Storage Account的时候,怎样快速做到从一个账号拷贝到另一个账号呢.当拷贝的文件比较,例如100多G(VHD文件). http://code.msdn.microsoft.com ...

  10. js如何判断一个数组

    typeof [] 为一个"object" 不能通过此方法判断一个数组 方法 1.instanceof方法,这个方法用的比较多. 2.这个是es5以后推荐的方法,Object.pr ...