- 浏览: 223901 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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 1842[2012-12-31 16:53] openGL笔记 ... -
OpenGL 图形编程 学习笔记 二
2013-01-04 13:48 1224[2012-12-31 16:38] OpenGL ... -
Boost 学习笔记 第一天
2012-12-07 10:50 10151. timer.hpp timer接口简单,轻 ... -
“工业级” 断言
2012-09-06 12:30 990class Assert { public: A ... -
算法学习 之遍历
2012-05-22 14:22 1096/********************广度优先遍历算 ... -
算法学习 之链表
2012-05-22 13:52 1003/**********开放定址哈希表的存储结构***** ... -
算法学习 之查询
2012-05-22 11:45 898/******************顺序查找***** ... -
算法学习 之排序
2012-05-07 11:42 927/***********直接插入排序********** ... -
日常开发有用标签 五
2012-04-11 10:42 900linux cmd Mr__zh ... -
日常开发有用标签 四
2012-04-11 10:38 776java I/O 深入分析 Java ... -
日常开发有用标签 三
2012-04-11 10:37 911java thread java并发编程- ... -
日常开发有用标签 二
2012-04-11 10:35 692java 100个Java经典例子(41- ... -
日常开发有用标签 一
2012-04-11 10:31 929工具 Linux 常用C函数(中文版) ... -
C++ Primer 笔记七
2012-03-27 16:15 893每个类都定义了一个接口和一个实现。接口由使用该类的代码需要执行 ... -
C++ Primer 笔记六
2012-03-07 14:38 841typedef 通常被用于以下三种目的: 1.为了隐藏特定类型 ... -
C++ Primer 笔记五 引用(const)1
2012-02-24 17:50 1259定义 const 对象常量在定义后就不能被修改,所以定义时必须 ... -
C++ Primer 笔记四
2012-02-22 15:38 10321.内置类型变量是否自动初始化取决于变量定义的位置。在函数体外 ... -
C++ Primer 笔记三
2012-02-22 12:53 867初始化变量定义指定了变量的类型和标识符,也可以为对象提供初始值 ... -
C++ Primer 笔记二
2012-02-16 16:09 930/* * main.cpp * Created on ... -
C++ Primer 笔记一
2012-02-16 16:08 919/* * main.cpp * Created on ...
相关推荐
这篇学习笔记1主要会探讨基础的OpenGL设置和渲染原理。 在OpenGL编程中,我们首先需要设置上下文环境,这通常通过窗口系统接口(如GLUT或SDL)完成。在"base.cpp"这个文件中,我们可能看到初始化OpenGL窗口的代码,...
《OpenGL ES 2.0 学习笔记》是一份针对英文版《OpenGL ES 2.0 Programming Guide》的阅读总结,旨在帮助读者更好地理解和掌握OpenGL ES 2.0的核心概念和技术要点。以下是对该书中关键知识点的详细解释和归纳。 ####...
Java OpenGL(JOGL)学习笔记 在学习 JOGL 时,我们需要了解图形显示器是如何工作的。图形显示器是一个由许多像素点组成的绘图区域,图形系统的核心是一个魔法画笔,这支画笔能以非常快的速度移动到一个确定的像素...
在本篇“Android OpenGL 学习笔记(一)”中,我们将探讨如何在Android平台上使用OpenGL ES进行图形渲染。OpenGL ES是OpenGL的一个轻量级版本,专为嵌入式系统设计,包括移动设备如智能手机和平板电脑。这篇笔记将...
OpenGL(Open Graphics Library)是一种用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。它使用一种特殊的状态机架构,每条命令都会改变渲染管道的状态。OpenGL的核心优势在于: - **跨平台性**...
GLSL(OpenGL Shading Language)是为图形编程设计的专用语言,用于编写这些着色器。着色器的渲染流程包括从顶点数据开始,通过一系列处理,最终由片段着色器生成屏幕上的像素。在这个过程中,属性和uniform变量被...
在本节“code_opengl学习笔记3-1-在3D中绘制点”中,我们将深入探讨如何使用OpenGL来在三维空间中绘制点,这是构建更复杂图形的基础。 在OpenGL中,点是最基本的图元之一,它不具有长度、宽度或深度,但当在屏幕上...
本学习笔记主要关注如何使用OpenGL绘制矩形,这是一个基础但至关重要的概念,因为几乎所有的图形绘制都可以通过组合基本形状如矩形来实现。 在OpenGL中,没有内置的“绘制矩形”函数。相反,我们通常使用四条直线...
在"games101计算机图形学学习笔记分享"中,我们可以期待了解到一系列关于这个主题的基础概念、理论和技术。 首先,笔记可能会从基础的图形学原理开始讲解,包括二维和三维坐标系的概念,以及如何在笛卡尔坐标系中...
本学习笔记旨在帮助初学者掌握OpenGL编程的基础知识,尤其针对坐标变换和图形管线有深入的探讨。 首先,OpenGL图形管线是其核心概念之一,它是从几何形状到屏幕像素的处理流程。管线可以分为几个阶段:顶点着色器、...
OpenGL学习笔记1 - 基本的运行框架 在计算机图形学领域,OpenGL是一个广泛使用的跨语言、跨平台的应用程序编程接口(API),用于渲染2D、3D图像。本笔记将聚焦于如何在Visual Studio 2012环境下搭建一个基本的...
### OpenGL学习笔记关键知识点 #### 一、OpenGL坐标系与绘图函数 - **坐标系定义**:在OpenGL中,坐标系定义了三维空间中物体的位置。X坐标轴从左至右,Y坐标轴从下至上,Z坐标轴从观察者的视角由近及远(即从里至...
OpenGL是一种开放源代码的图形库,它为程序员提供了一种跨平台的方式来创建高性能的2D和3D图形。OpenGL在C++中广泛使用,但在C#编程环境中,开发者通常会利用封装库来调用OpenGL的功能。标题提到的"C#版的OpenGL...
OpenGL超级宝典是一本深入学习图形编程的权威书籍,涵盖了从基础到高级的大量OpenGL编程技术。这份笔记包含了第15章之前的全部代码示例,这些示例是基于C++语言实现的,主要关注OpenGL的核心功能和编程模式。在...
OpenGL ES2.0学习”这本书将引导读者全面掌握OpenGL ES 2.0在Android平台上的应用,从基础概念到高级技巧,涵盖3D图形编程的各个方面,对于想要进入移动游戏开发领域的开发者来说是一本宝贵的资源。
### OpenGL学习笔记知识点详解 #### 一、OpenGL简介与安装准备 OpenGL(Open Graphics Library)是一种用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。它被广泛应用于游戏开发、图形软件以及...
在"OpenGL学习笔记.doc"中,可能包含以下内容: 1. **基本概念**:介绍OpenGL的架构、管线模型以及主要的数据类型和函数。 2. **环境设置**:详述如何在Visual C++ 6.0中创建OpenGL项目,设置链接器选项,以及如何...
这个实例“Xcode高级图形编程实例6”是《企业级iOS应用开发实践》一书第六章的配套源码,旨在帮助读者深入理解并实践iOS图形编程的精髓。 首先,我们要关注的是Objective-C,这是苹果生态系统中主要的编程语言,...
"orge学习笔记"是关于orge 3D引擎的个人学习...总之,"orge学习笔记"为我们提供了一个深入学习和掌握orge 3D引擎的机会,通过这份资料,无论是新手还是有经验的开发者,都能提升自己在3D图形编程和游戏开发领域的技能。