一.

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增强技巧(二)----直线图元的更多相关文章

  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. 关于调试日志Log

    __VA_ARGS__  是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持).宏前面加上##的作用在于,当可变参数的个数为0时,这里的## ...

  2. Fastlane为iOS带来持续部署

    Fastlane是一组工具套件,旨在实现iOS应用发布流程的自动化,并且提供一个运行良好的持续部署流程,只需要运行一个简单的命令就可以触发这个流程. Fastlane是一个ruby脚本集合,其中囊括了 ...

  3. Use Cursor

    declare : CURSOR cursor_name IS select_statement ; open : OPEN cursor_name if the query returns no r ...

  4. 5 个最好的3D游戏开发工具(转)

    转自:http://www.open-open.com/news/view/33a4f0 5 个最好的3D游戏开发工具 jopen 2012-11-19 22:56:21 • 发布 摘要:UDK(th ...

  5. Java GC回收机制

    优秀Java程序员必须了解的GC工作原理 一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只 ...

  6. There is no ‘Animation’ attached to the “Player” game object

    There is no ‘Animation’ attached to the “Player” game object 在照着龚老师的Unity3D投篮游戏视频教程练习时,遇到这个错误提示. 我知道 ...

  7. Windows 8.1 新增控件之 TimePicker

    之前已经为大家介绍过DatePicker 控件的相关内容,有日期控件当然就得有时间控件,本篇将和各位一起了解TimePicker 的使用方法. 先来介绍一下ClockIdentifier 属性,默认情 ...

  8. rpc框架之 thrift 学习 1 - 安装 及 hello world

    thrift是一个facebook开源的高效RPC框架,其主要特点是跨语言及二进制高效传输(当然,除了二进制,也支持json等常用序列化机制),官网地址:http://thrift.apache.or ...

  9. C118+Osmocom-bb+Openbts搭建小型基站

    演示图片: 演示视频: 交流论坛:GsMsEc 交流Q群:

  10. c++基础 使用智能指针

    三个智能指针模板(auto_ptr.unique_ptr和shard_ptr)都定义了类似指针的对象(c++11已将auto_ptr摒弃),可以将new获得(直接或间接) 的地址赋给这种对象.当智能指 ...