OpenGL入门实例(2)-图元和其他
来源:互联网 发布:公司电脑加密软件 编辑:程序博客网 时间:2024/05/18 00:25
通过一天的学习,将书中的代码敲打下来,有些事情,你不做的话永远感觉难,继续坚持下去,目前,图形学的编程还没有给我带来激情,学起来很吃力.
经过前面的学习,我们先来看一看最简单的例子:点
#include<GL/glut.h>#include<stdio.h>void display(){glClear(GL_COLOR_BUFFER_BIT);//没有这一句,则背景使用的是当前的屏幕背景glPointSize(2.0);//定义点的大小glBegin(GL_POINTS);glColor3f(1.0,1.0,1.0);//定义点的颜色glVertex2f(-0.5,-0.5);glColor3f(1.0,0.0,0.0);glVertex2f(-0.5,0.5);glColor3f(0.0,1.0,0.0);glVertex2f(0.5,-0.5);glColor3f(0.0,0.0,1.0);glVertex2f(0.5,0.5);glEnd();glFlush();}int main(int argc,char **argv){glutInit(&argc,argv);glutCreateWindow("POINTS!");glutDisplayFunc(display);glutMainLoop();}效果图如下:
再来看第二个例子:线,这个图元分为三部分
GL_LINES:
#include<GL/glut.h>//本种用法每一对顶点画一条线段#include<stdio.h>void display(){float i;glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0,0.0,0.0);//设置颜色glBegin(GL_LINES); glVertex2f(-0.5,0.5); glVertex2f(10,8); glVertex2f(10,8); glVertex2f(5,6);//不知为什么无法画多条直线glEnd();glFlush();}int main(int argc,char **argv){glutInit(&argc,argv);glutCreateWindow("LiNES!");glutDisplayFunc(display);glutMainLoop();}效果图如下:
2.GL_LINES_STRIP:每条线段的终点都是下条线段的起点
#include<GL/glut.h>#include<stdio.h>void display(){glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_LINE_STRIP);glColor3f(1.0,0.0,0.0);glVertex2f(-0.5,-0.5);glVertex2f(-0.5,0.5);glVertex2f(0.5,0.5);glVertex2f(0.5,-0.5);glEnd();glFlush();}int main(int argc,char **argv){glutInit(&argc,argv);glutCreateWindow("LINES_STRIP");glutDisplayFunc(display);glutMainLoop();}效果图如下:
3.GL_LINE_LOOP:和GL_LINE_STRIP一样,只不过最后一个顶点自动连接第一个顶点
#include<GL/glut.h>#include<stdio.h>void display(){glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_LINE_LOOP);glColor3f(1.0,0.0,0.0);glVertex2f(-0.5,-0.5);glVertex2f(-0.5,0.5);glVertex2f(0.5,0.5);glVertex2f(0.5,-0.5);glEnd();glFlush();}int main(int argc,char **argv){glutInit(&argc,argv);glutCreateWindow("LOOP!");glutDisplayFunc(display);glutMainLoop();}
效果图如下:
线段的属性包括颜色线段粗细以及一个条纹图案后者允许我们创建虚线
下图效果与上图一样,只不过定义的线段宽度为4.0;
#include<GL/glut.h>#include<stdio.h>void display(){glClear(GL_COLOR_BUFFER_BIT);/*与前一个的不同之处 */glBegin(GL_LINE_LOOP);glColor3f(1.0,0.0,0.0);glLineWidth(4.0);//线宽glLineStipple(3,0xcccc);//位模式`glVertex2f(-0.5,-0.5);glVertex2f(-0.5,0.5);glVertex2f(0.5,0.5);glVertex2f(0.5,-0.5);glEnd();glFlush();}int main(int argc,char **argv){glutInit(&argc,argv);glutCreateWindow("LOOP!");glutDisplayFunc(display);glutMainLoop();}效果图如下:
二 下面的代码:加入了键盘事件,也就是使应用程序能够接受程序员的指令,
我们将一个打开的窗口通过自定义键盘'q'或者'Q'键关闭窗口
#include <GL/glut.h>#include <stdio.h>#include <stdlib.h>#include<iostream>using namespace std;void display(){ glClear(GL_COLOR_BUFFER_BIT);//glClearColor//清除颜色 glBegin(GL_POLYGON); glVertex2f(-0.5,-0.5); glVertex2f(-0.5,0.5); glVertex2f(0.5,0.5); glVertex2f(0.5,-0.5); glEnd(); glFlush();}void mykey(unsigned char key,int x,int y)//使用键盘处理交互信息{if(key=='q' || key=='Q' || key=='\27')exit(0);}int main(int argc,char **argv){ glutInit(&argc,argv); glutCreateWindow("Hello,world!"); glutDisplayFunc(display);//glutDisplayFunc(void (*func)(void))glutKeyboardFunc(mykey);//使用键盘//glutMouseFunc(mymouse); glutMainLoop();//导致程序进入一个事件}
(continue)
0 0
- OpenGL入门实例(2)-图元和其他
- OpenGL几何图元和缓冲区(一)
- OpenGL几何图元和缓冲区(二)
- OpenGL几何图元和缓冲区(三)
- OpenGL几何图元和缓冲区(四)
- OpenGL几何图元和缓冲区(五)
- OpenGL几何图元和缓冲区(六)
- OpenGL入门实例(一)
- Android OpenGL 入门实例
- 计算机图形学(三)_图元的属性_8_ 其他OpenGL线效果
- OpenGL基本图元
- OpenGL图元
- OpenGL基本图元
- OpenGL: Ubuntu图元
- OpenGL基本图元
- OpenGL--图元
- OpenGL图元
- 3.OpenGL--图元
- Java并发基础构建模块简介
- SuSEfirewall2 只允许指定IP访问UDP端口或TCP端口
- ORA-00922: 选项缺失或无效
- 【面试题】之Linux目录
- Asp.net 构建可扩展的的Comet Web 应用(二)
- OpenGL入门实例(2)-图元和其他
- android 理解和使用自定义权限
- linux iptables端口映射设置
- linux下svn命令使用大全
- 十三章Basic Data Persistence-----之四(Core Data存储)
- TP 下载文件
- 祖住啄走缀坠滋坐驻兹嘴滓纵卒自棕zntodc
- NSAutoreleasePool
- 一种经典的网络游戏服务器架构