- 浏览: 218017 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (163)
- c++ (30)
- JavaScript (30)
- java (61)
- jQuery (3)
- ACE (2)
- oracle (9)
- jni (0)
- android (2)
- shell (1)
- myeclipse (1)
- Hibernate (1)
- linux (2)
- sqlserver (2)
- windows (2)
- sql (2)
- php (2)
- css (1)
- 学习 (1)
- ExtJs (1)
- RSS (1)
- 报文 (1)
- 跟我学Spring3 (6)
- dos (1)
- server (1)
- nosql (4)
- mongodb (6)
- photoshop (1)
- WebService (2)
- 股票 (1)
- OpenGL (3)
- Spring3MVC (6)
- 生活 (1)
- struts2 (1)
- 云盘 (1)
- blog (1)
- nosql nodejs mongoose (1)
最新评论
-
sblig:
配置分片: mongo -port 27017config ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
sblig:
配置路由:mongs: 40000 40100 40200sc ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
fuanyu:
哥们,干得漂亮。。
struts2 高危漏洞修复 -
sblig:
配置列子如下
<?xml version="1 ...
跟我学Spring3 学习笔记一 -
sblig:
307622798 写道博主你好,最近在看你的js系列文章,发 ...
JavaScript 学习笔记 二 对象的访问
[2012-12-31 16:15] OpenGL学习笔记(6)第一个动画 - Clingingboy - 博客园 - Google Chrome
glutMouseFunc用于捕获鼠标事件
glutKeyboardFunc用于捕获键盘事件
glutMotionFunc用于鼠标按下又移动鼠标的事件(MouseMove)
glutIdleFunc事件,当循环队列处于空闲时则触发该事件
glutTimerFunc单位时间内内触发事件
属性-》链接器-》输入 附加依赖库 glut32.lib OPENGL32.LIB GLU32.LIB GLAUX.LIB
属性-》c/c++-》预处理器 预处理器定义 ;GLUT_BUILDING_LIB
每次都将spin加2,这样的话spin其实是矩形旋转度数的总和,但如何维护矩形初始化(未旋转前)的矩阵呢?
即将为旋转前的当前矩阵压入(glPushMatrix)矩阵堆栈中,然后当旋转结束后又弹出(glPopMatrix)堆栈恢复,当spin增加时,又以原始矩阵来合并,这样就不会出现什么问题了.
还有一种做法则是去掉矩阵堆栈的压入与弹出,使得spin每次都是等于2,但度数就可能会超过360,造成数字过大转换,如
#include <stdio.h> #include <gl/glut.h> static GLfloat spin = 0.0; void display(void) { glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glRotatef(spin,0.0,0.0,1.0); glColor3f(1.0,1.0,1.0); glRectf(-25.0,-25.0,25.0,25.0); glPopMatrix(); glutSwapBuffers(); } void spinDisplay(void) { spin = spin + 2.0; if (spin > 360.0) { spin = spin-360.0; } glutPostRedisplay(); } void init(void) { glClearColor(0.0,0.0,0.0,0.0); glShadeModel(GL_FALSE); } void reshape(int w,int h) { glViewport(0,0,(GLsizei)w,(GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-50.0,50.0,-50.0,50.0,-1.0,1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } void mouse(int button,int state,int x,int y) { switch(button){ case GLUT_LEFT_BUTTON: if (state == GLUT_DOWN) { glutIdleFunc(spinDisplay); } break; case GLUT_MIDDLE_BUTTON: case GLUT_RIGHT_BUTTON: if (state == GLUT_DOWN) { glutIdleFunc(NULL); } break; default: break; } } int _tmain(int argc, char* argv[]) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB); glutInitWindowSize(250,250); glutInitWindowPosition(100,100); glutCreateWindow(argv[0]); init(); glutDisplayFunc(display); glutReshapeFunc(reshape); glutMouseFunc(mouse); glutMainLoop(); return 0; }
(http://www.cnblogs.com/Clingingboy/archive/2010/10/17/1853671.html)
[2012-12-31 16:35] OpenGL学习笔记(6)第一个动画 - Clingingboy - 博客园 - Google Chrome
glutTimerFunc回调事件只执行一次,如果想一直执行的话就需要在内部再次调该方法,下面用glutTimerFunc来替代glutIdleFunc实现同样的效果
void spinDisplay(int value) { spin = spin + 2.0; if (spin > 360.0) spin = spin - 360.0; glutPostRedisplay(); glutTimerFunc(10, spinDisplay, 1); }
当然首先要外部先调用一次spinDisplay方法才可以
(http://www.cnblogs.com/Clingingboy/archive/2010/10/17/1853671.html)
发表评论
-
OpenGL 图形编程 学习笔记 三
2013-01-04 13:54 1815[2012-12-31 16:53] openGL笔记 ... -
OpenGL 图形编程 学习笔记 二
2013-01-04 13:48 1181[2012-12-31 16:38] OpenGL ... -
Boost 学习笔记 第一天
2012-12-07 10:50 9701. timer.hpp timer接口简单,轻 ... -
“工业级” 断言
2012-09-06 12:30 960class Assert { public: A ... -
算法学习 之遍历
2012-05-22 14:22 1070/********************广度优先遍历算 ... -
算法学习 之链表
2012-05-22 13:52 974/**********开放定址哈希表的存储结构***** ... -
算法学习 之查询
2012-05-22 11:45 860/******************顺序查找***** ... -
算法学习 之排序
2012-05-07 11:42 900/***********直接插入排序********** ... -
日常开发有用标签 五
2012-04-11 10:42 877linux cmd Mr__zh ... -
日常开发有用标签 四
2012-04-11 10:38 751java I/O 深入分析 Java ... -
日常开发有用标签 三
2012-04-11 10:37 855java thread java并发编程- ... -
日常开发有用标签 二
2012-04-11 10:35 661java 100个Java经典例子(41- ... -
日常开发有用标签 一
2012-04-11 10:31 910工具 Linux 常用C函数(中文版) ... -
C++ Primer 笔记七
2012-03-27 16:15 865每个类都定义了一个接口和一个实现。接口由使用该类的代码需要执行 ... -
C++ Primer 笔记六
2012-03-07 14:38 799typedef 通常被用于以下三种目的: 1.为了隐藏特定类型 ... -
C++ Primer 笔记五 引用(const)1
2012-02-24 17:50 1218定义 const 对象常量在定义后就不能被修改,所以定义时必须 ... -
C++ Primer 笔记四
2012-02-22 15:38 10081.内置类型变量是否自动初始化取决于变量定义的位置。在函数体外 ... -
C++ Primer 笔记三
2012-02-22 12:53 842初始化变量定义指定了变量的类型和标识符,也可以为对象提供初始值 ... -
C++ Primer 笔记二
2012-02-16 16:09 894/* * main.cpp * Created on ... -
C++ Primer 笔记一
2012-02-16 16:08 895/* * main.cpp * Created on ...
相关推荐
openGL图形编程.pdf
OPENGL图形编程是比较早的图形编程语言,做游戏的时候需要用到
OpenGL图形编程入门 简单的Opengl入门,这个是word格式。很适合入门者的学习,上手很快。
opengl基础图形编程,带你进入图形世界哦
OPENGL高级图形编程。好书一本,不要错过。。。。。。。
第一章 OpenGL与三维图形世界 1.1 OpenGL使人们进入三维图形世界 1.2 OpenGL提供直观的三维图形开发环境 1.3 OpenGL称为目前三维图形开发标准 第二章 OpenGL概念建立 2.1 OpenGL基本理解 2.2 OpenGL...
opengl基础图形编程.opengl基础图形编程.
OpenGL基础图形编程
用C#实现openGL的编程,引用的csgl的库,方便快捷的使用,可以用来OpengL入门学习
opengl图形编程chm电子书~!!! opengl图形编程基础~!!! opengl图形编程vc++~!!!
现代OpenGL+Qt学习笔记之二:程序框架http://blog.csdn.net/chaojiwudixiaofeixia/article/details/77917697源码。
里面包括三个rar解压包,其中包括openGL参考函数,编程指南及实例等内容。
OpenGL三维图形编程指南OpenGL三维图形编程指南
OpenGL图形变换编程实例,实现了OpenGL封装的关于图形变换的函数
OpenGL VC-VB 图形编程
基于OpenGL的高级图形编程技术 基于OpenGL的高级图形编程技术
图形学 模拟太阳系 opengl编程 借鉴一下 学习一下 好东西哦
Windows环境下openGL图形编程环境配置全过程
Advanced Graphics Programming Techniques Using OpenGL.PDF