- 浏览: 217996 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (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:38] OpenGL---GLUT教程(二) GLUT初始化 - 北京的开始 - 博客频道 - CSDN.NET - Google Chrome
首先要做的是调用函数glutInit()。
Void glutInit(int*argc,char**argv);
参数:
Argc:一个指针,指向从main()函数传递过来的没更改的argc变量。
Argv:一个指针,指向从main()函数传递过来的没更改的argv变量。
在初始化GLUT后,我们开始定义我们的窗口。首先确定窗口位置(它默认的是屏幕左上角),我们使用函数glutInitWindowPosition()。
Void glutInitWindowPositon(int x,int y);
参数:
X: 距离屏幕左边的像素数。-1是默认值,意思就是由窗口管理程序决定窗口出现在哪里。如果不使用默认值,那你就自己设置一个值。
Y:距离屏幕上边的像素数。和X一样。
注意,参数仅仅是对窗口管理程序的一个建议。尽管你精心的设置了窗口位置,window返回的可能是不同的位置。如果你设置了,一般会得到你想要的结果。接下来我们设置窗口大小,使用函数glutInitWindowSize()。
Void glutInitWindowSize(int width,int height);
参数:
Width:窗口的宽度。
Height:窗口的高度。
同样width,height也只是一个参考数字。避免使用负数。
接下来。你应该使用函数glutInitDisplayMode()定义显示方式。
Void glutInitDisplayMode(unsighed int mode)
参数:
Mode――可以指定下列显示模式
Mode参数是一个GLUT库里预定义的可能的布尔组合。你使用mode去指定颜色模式,数量和缓冲区类型。
指定颜色模式的预定义常量有:
1:GLUT_RGBA或者GLUT_RGB。指定一个RGBA窗口,这是一个默认的颜色模式。
2:GLUT_INDEX。指定颜色索引模式。
这个显示模式还允许你选择单缓冲区或双缓冲区窗口。
1:GLUT_SINGLE.单缓冲区窗口。
2:GLUT_BUFFER.双缓冲区窗口,这是产生流畅动画必须选的。
还可以指定更多,如果你想指定一组特殊的缓冲的话,用下面的变量:
1:GLUT_ACCUM.累积缓冲区。
2:GLUT_STENCIL.模板缓冲区。
3:GLUT_DEPTH.深度缓冲区。
假定你想要一个有单缓冲区,深度缓冲区的RGB窗口,你用“或“(|)操作符来建立你想要的显示模式。
…………….
glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE|GLUT|DEPTH);
…………….
经过上面的这些步骤后,就可以调用函数glutCreateWindow()来创建窗口了。
Int glutCreateWindow(char* title);
参数:
Title:设置窗口的标题。
glutCreateWindow()的返回值是一个窗口标识符。后面你可以在GLUT里使用这个标识符,不过这个超出了本小节的范围。
现在就有一些代码来完成所有的初始化操作。
#include<gl/glut.h>
void main(int argc,char**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DEPTH|GLUT_SINGLE|GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow(“GLUT Tutorial”);
}
如果你运行上述代码,你将会得到一个空的黑的控制台窗口,而没有OpenGL窗口。并且控制台窗口将很快消失。
在我们渲染一些东西前,还有两件事需要处理。第一告诉GLUT哪个函数负责渲染。我们创建一个简单的渲染的函数。下面的这个函数将会清除颜色缓冲区并画一个三角形。
...
void renderScene(void) {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glFlush();
}
上面的函数的名字你可以自己取一个。现在你必须告诉GLUT使用我们上面的函数来进行渲染。这个叫寄存回调。。让我们告诉GLUT这个函数renderScene应该被使用。当需要重画的时候GLUT有一个只传递一个函数名称参数的函数(以函数名为形参的函数)就会被调用。
void glutDisplayFunc(void (*func)(void));
参数:
func: 当窗口需要被重绘是调用的函数的名称。注意使用NULL作为实参是错误的。
最后一件事是告诉GLUT我们准备进入应用程序事件处理循环。GLUT提供了一个函数让程序进入一个永不结束的循环。一直等待处理下一个事件。函数是glutMainLoop()。
void glutMainLoop(void)
到目前为止所有的代码都列在下面。如果你运行代码,将会得到一个控制台窗口,和一个画着一个白色三角形的OpenGL窗口,出现在你设置的位置,并有着你设置的尺寸。
#include <GL/glut.h> void renderScene(void) { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); glVertex3f(-0.5,-0.5,0.0); glVertex3f(0.5,0.0,0.0); glVertex3f(0.0,0.5,0.0); glEnd(); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(100,100); glutInitWindowSize(320,320); glutCreateWindow("3D Tech- GLUT Tutorial"); glutDisplayFunc(renderScene); glutMainLoop(); }
(http://blog.csdn.net/mazhen1986/article/details/7586402)
发表评论
-
OpenGL 图形编程 学习笔记 三
2013-01-04 13:54 1814[2012-12-31 16:53] openGL笔记 ... -
OpenGL 图形编程 学习笔记 一
2013-01-04 13:45 1093[2012-12-31 16:15] 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 750java I/O 深入分析 Java ... -
日常开发有用标签 三
2012-04-11 10:37 854java thread java并发编程- ... -
日常开发有用标签 二
2012-04-11 10:35 660java 100个Java经典例子(41- ... -
日常开发有用标签 一
2012-04-11 10:31 909工具 Linux 常用C函数(中文版) ... -
C++ Primer 笔记七
2012-03-27 16:15 864每个类都定义了一个接口和一个实现。接口由使用该类的代码需要执行 ... -
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+Qt学习笔记之二:程序框架http://blog.csdn.net/chaojiwudixiaofeixia/article/details/77917697源码。
OpenGL基础图形编程
用C#实现openGL的编程,引用的csgl的库,方便快捷的使用,可以用来OpengL入门学习
opengl图形编程chm电子书~!!! opengl图形编程基础~!!! opengl图形编程vc++~!!!
里面包括三个rar解压包,其中包括openGL参考函数,编程指南及实例等内容。
OpenGL VC-VB 图形编程
OpenGL三维图形编程指南OpenGL三维图形编程指南
OpenGL图形变换编程实例,实现了OpenGL封装的关于图形变换的函数
基于OpenGL的高级图形编程技术 基于OpenGL的高级图形编程技术
图形学 模拟太阳系 opengl编程 借鉴一下 学习一下 好东西哦
Windows环境下openGL图形编程环境配置全过程
Advanced Graphics Programming Techniques Using OpenGL.PDF