1.图元

  1.点图元

   glBegin(GL_POINTS);

   glend();

程序:点图元的应用

#include "stdafx.h"
#include<stdio.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=-50.0f;
GLfloat sizes[];
GLfloat step;
GLfloat CurPointSize;
glGetFloatv(GL_POINT_SIZE_RANGE,sizes);
glGetFloatv(GL_POINT_SIZE_GRANULARITY,&step);
CurPointSize=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)
{
x=50.0f*cos(angle);
y=50.0f*sin(angle);
glBegin(GL_POINTS);
glVertex3f(x,y,z);
glEnd();
z+=0.5f;
CurPointSize+=step;
} 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(); }

知识点:

1.键盘响应函数

2.矩阵堆栈

3.矩阵初始化

4.点图元的大小:glpointsize();

5.获得点图元的大小范围和增量大小

  GLfloat sizes[2];

  GLfloat step;

  glGetFloatv(GL_POINT_SIZE_RANGE,sizes);

  glGetFloatv(GL_POINT_SIZE_GRANULARITY,&step);

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. html5 Canvas绘制图形入门详解

    html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏览器(FireFox.Chrome. ...

  8. OpenGL学习进程(8)第六课:点、边和图形(三)绘制图形

    本节是OpenGL学习的第六个课时,下面介绍OpenGL图形的相关知识:     (1)多边形的概念: 多边形是由多条线段首尾相连而形成的闭合区域.OpenGL规定,一个多边形必须是一个“凸多边形”. ...

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

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

随机推荐

  1. vue-route+webpack部署单页路由项目,访问刷新出现404问题

    问题描述:前端同事使用Vue.js框架,利用vue-route结合webpack编写了一个单页路由项目,运维协助在服务器端配置nginx.部署完成后,访问首页没问题,从首页里打开二级页面没问题,但是所 ...

  2. java反射详解(转)

    本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解. 下面开始正文. [案例1]通过一个对象 ...

  3. Gruntjs: grunt-contrib-jst

    预编译Underscore模板到JST文件(Underscore:JS工具库) generate JavaScript template functions Gruntfile的配置实例: modul ...

  4. DWZ中Tree树形菜单的treeCheck如何获取返回值解决方案

    最近在对DWZ和asp.net MVC3进行整合,其中遇到了很多问题,总算一一解决了,今天就说说题目所示的问题解决方案. 想做一个基于角色的权限管理,要对每一个Action进行权限控制.就想用DWZ的 ...

  5. 如何在mac本上安装android sdk

    众所周知的原因,google的很多网站在国内无法访问,苦逼了一堆天朝程序员,下是在mac本上折腾android 开发环境的过程: 一.先下载android sdk for mac 给二个靠谱的网址: ...

  6. <实训|第十三天>linux中ACL权限控制以及磁盘配额,附编译属于自己的linux内核

    [root@localhost~]#序言 首先讲讲昨天关于缩容失败,开不机的解决方法:ACL权限也算是一个很重要的知识点,不难,但是很实用:磁盘配额一般不需要自己弄,但是要懂得原理.剩下的就是编译属于 ...

  7. Matlab中给figure添加图例(legend),标题(title)和颜色(color)

    在Matlab绘图过程中,尤其是需要将多个图绘制在相同的坐标轴中时,通常需要将不同的曲线设置成为不同的颜色.此外,为了直观,还需要给这张图标增添标题和图例.这篇文章展示了在Matlab的绘图窗口(fi ...

  8. Android Bundle

    #Bundle类介绍 Bundle主要用于传递数据:它保存的数据,是以key-value(键值对)的形式存在的. 我们经常使用Bundle在Activity之间传递数据,传递的数据可以是boolean ...

  9. dblink连接的目标端 session不断的问题。

    来源于:http://blog.itpub.net/22782896/viewspace-676842/ 1.在使用了dblink的存储过程中,可以显示的手动关闭dblink连接,具体写法如下(测试存 ...

  10. linux下部署项目问题

    1. 今天linux下部署thinkphp项目,数据库用的mysql. 页面其他都是正常的,但是从数据库中取出的数据都是乱码.最后查了资料 解决方案: 在ThinkPHP里面 Library\Thin ...