绘制图形与3D增强技巧(二)----直线图元
一.
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);
直线示范例程序
- /
- #include "stdafx.h"
- #include<GL\glut.h>
- #include<math.h>
- #define PI 3.14
- GLfloat xRot=0.0f;
- GLfloat yRot=0.0f;
- void Init()
- {
- glClearColor(0.0,0.0,0.0,0.0);
- }
- void ChangeSize(int w,int h)
- {
- glViewport(,,w,h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- GLfloat aspect=w/h;
- if (w<=h)
- {
- glOrtho(-100.0,100.0,-100.0/aspect,100.0/aspect,-100.0,100.0);
- }
- else
- {
- glOrtho(-100.0*aspect,100.0*aspect,-100.0,100.0,-100.0,100.0);
- }
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- }
- void Mydisplay()
- {
- GLfloat x,y,angle,z=0.0f;
- GLfloat sizes[];
- glColor3f(0.0f,1.0f,0.0f);
- glClear(GL_COLOR_BUFFER_BIT);
- glPushMatrix();
- glRotatef(xRot,1.0,0.0,0.0);
- glRotatef(yRot,0.0,1.0,0.0);
- for (angle = 0.0f; angle <*PI; angle+=0.1f)
- {
- glBegin(GL_LINES);
- x=50.0f*cos(angle);
- y=50.0f*sin(angle);
- glVertex3f(x,y,z);
- x=50.0f*cos(angle+PI);
- y=50.0f*sin(angle+PI);
- glVertex3f(x,y,z);
- glEnd();
- }
- glPopMatrix();
- glutSwapBuffers();
- }
- void Mykeys(int key,int x,int y)
- {
- if (key==GLUT_KEY_LEFT)
- {
- yRot-=5.0f;
- }
- if (key==GLUT_KEY_RIGHT)
- {
- yRot+=5.0f;
- }
- if (key==GLUT_KEY_UP)
- {
- xRot-=5.0f;
- }
- if (key==GLUT_KEY_DOWN)
- {
- xRot+=5.0f;
- }
- if (xRot>355.0f)
- {
- xRot=0.0f;
- }
- if (xRot<=-5.0f)
- {
- xRot=355.0f;
- }
- if (yRot>355.0f)
- {
- yRot=0.0f;
- }
- if (yRot<=-5.0f)
- {
- yRot=355.0f;
- }
- glutPostRedisplay();
- }
- int main(int argc,char ** argv)
- {
- glutInit(&argc,argv);
- glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
- glutInitWindowPosition(,);
- glutInitWindowSize(,);
- glutCreateWindow("Points");
- Init();
- glutDisplayFunc(Mydisplay);
- glutReshapeFunc(ChangeSize);
- glutSpecialFunc(Mykeys);
- glutMainLoop();
- }
绘制图形与3D增强技巧(二)----直线图元的更多相关文章
- 绘制图形与3D增强技巧(二)----直线图元之点画
一.直线的点画模式:即并不完全填充所有像素来画一条直线,而是用点画的形式,间隔地画一条直线 首先启用点画模式: glEnable(GL_LINE_STIPPLE); 然后自定义创建自己的点画模式 gl ...
- 绘制图形与3D增强技巧(五)----多边形图元的使用及其他
1.注意多边形图元中的多边形只能是平面的,而且必须为凸多边形,且多边形的边不能弯曲 2.细分和边界,可以人为设置边界边和非边界边 glEdgeFlag(true)//接下来所有点均为边界边起点 glE ...
- 绘制图形与3D增强技巧(四)----多边形图元及其点画模式
1.四边形图元 glBegin(GL_QUADS); glend(); 2.通用多边形 glBegin(GL_POLYGONS); glend(); 3.多边形点画模式 glenable(GL_POL ...
- 绘制图形与3D增强技巧(三)----三角形图元TRANGLE
1. glBegin(GL_TRANGLES); ........ glend(); 2.多边形的环绕方向:逆时针和顺时针的正反面 GLFront(GL_CCW)和GLFront(GL_CW); 3. ...
- 绘制图形与3D增强技巧(一)----点图元
1.图元 1.点图元 glBegin(GL_POINTS); glend(); 程序:点图元的应用 #include "stdafx.h" #include<stdio.h& ...
- 【canvas学习笔记二】绘制图形
上一篇我们已经讲述了canvas的基本用法,学会了构建canvas环境.现在我们就来学习绘制一些基本图形. 坐标 canvas的坐标原点在左上角,从左到右X轴坐标增加,从上到下Y轴坐标增加.坐标的一个 ...
- OpenGL学习进程(4)第二课:绘制图形
本节是OpenGL学习的第二个课时,下面介绍如何用点和线来绘制图形: (1)用点的坐标来绘制矩形: #include <GL/glut.h> void display(void) ...
- 在Android中使用OpenGL ES进行开发第(三)节:绘制图形
一.前期基础知识储备笔者计划写三篇文章来详细分析OpenGL ES基础的同时也是入门关键的三个点: ①OpenGL ES是什么?与OpenGL的关系是什么?——概念部分 ②使用OpenGLES绘制2D ...
- html5 canvas 笔记一(基本用法与绘制图形)
<canvas> 元素 <canvas id="tutorial" width="150" height="150"> ...
随机推荐
- TRIM函数
Trim() 删除字符串首尾的空白(可以首尾一起,也可以指定首或尾,取决于控制参数),但会保留字符串内部作为词与词之间分隔的空格.
- HTML 学习笔记(图像)
HTML 图像 图像标签(<img>)和源属性(Src) 在HTML中,图像由<img>标签定义. <img>是空标签,意思是说,他只包含属性,并且没有闭合标签 要 ...
- Alpha版本发布说明
软件发布的同时,在团队博客上写一个发布说明 ▪ 列出这一版本的新功能 ▪ 这一版本修复的缺陷 ▪ 对运行环境的要求 ▪ 安装方法 ▪ 描述系统已知的问题和限制 ...
- web 前端常用组件【01】Pagination 分页
分页组件几乎是一般网站都会涉及到的组件,网上有很多这样的插件,自己挑来跳去选择了这一款. 官方Demo网址:http://mricle.com/JqueryPagination 功能强大,可扩展性比较 ...
- Python2.5-原理之模块
此部分来自于<Python学习手册>第五部分 一.模块(21章) 模块是最高级别的程序组织单元,它将程序代码和数据封装起来以便重用..模块往往对应于python程序文件.每个文件就是一个模 ...
- 闲扯 『 document.write 』
初春的晚上,闲来无事,聊聊 document.write 方法. document.write 使用方式非常简单,把 "字符串化"(不好意思,这可能是我自己创造的名词)的 html ...
- 关于lazyload插件的一些笔记
Lazy Load Plugin for jQuery 需要引入 jQuery,兼容各种 IE,适合 PC 端使用.详细 API 可以参考 http://www.appelsiini.net/proj ...
- 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(五)框架及Web项目的组件化
一.组件化印象 1.先给大家看一张截图 如果我告诉大家,这就是一个web管理系统发布后的所有内容,你们会不会觉得太简洁了,只有一个web.config.一个Global.asax文件,其它的都是dll ...
- 如何快速从一个Storage Account拷贝到另一个账号
当您有两个Storage Account的时候,怎样快速做到从一个账号拷贝到另一个账号呢.当拷贝的文件比较,例如100多G(VHD文件). http://code.msdn.microsoft.com ...
- js如何判断一个数组
typeof [] 为一个"object" 不能通过此方法判断一个数组 方法 1.instanceof方法,这个方法用的比较多. 2.这个是es5以后推荐的方法,Object.pr ...