分格化的具体内容见OpenGL。一、我们用如下四点做实验: osg::ref_ptr pVerArray = new osg::Vec3Array; pVerArray->push_back(osg::Vec3(0, 0, 0)); pVerArray->push_back(osg::Vec3(3, 0, 0)); pVerArray->push_back(osg::Vec3(3
2013-06-14 15:59:26 ·
3158 阅读 ·
一、OSG Core是不提供多数诸如文件读写功能的,如何强行使用,则会提示:这是因为没有加入相应的插件。插件的源码位于3rd party中http://openscenegraph.alphapixel.com/osg/downloads/openscenegraph-third-party-library-downloads ,在CMake的时候可以设置编译时我犯
2013-06-14 16:54:05 ·
9517 阅读 ·
一、VTK中的光线投射算法的基类是:vtkVolumeRayCastFunction。此在有两个重要方法:1. 初始化静态信息结构void FunctionInitialize( vtkRenderer *ren, vtkVolume *vol, vtkVolumeRayCastStaticInfo *staticInfo );根据传入的ren和vol初始化staticInfo
2013-06-23 10:41:17 ·
3864 阅读 ·
一、什么是纹理据我的理解,纹理实际上就是一幅图像(一维二维or三维皆可),然后用此图像对另一个图元进行贴图(以某种规则铺上去,可能被缩放或扭曲)。二、为什么要引入纹理如果不引入纹理,描述一幅现实画面时,需要用基本图元(如三角面片)去仿真,这既不真实,效率又低。三、OpenGL中如何进行纹理贴图1. 创建纹理对象,并为它指定一个纹理纹理对象实际上就是纹理图像,并有个纹理编号(
2013-06-24 11:19:09 ·
5496 阅读 ·
之前对视图知其然而不知其所以然,故而于此深究其理。一、四种变换1. 视图变换;2. 模型变换;3. 投影变换;4. 视口变换。弄明白这四种变换,视图方面的理解也该差不多了。首先定义位置。OpenGL中位置用(x,y,z,w)表示,x,y,z表示空间中的位置,而w通常为1,在之后的“透视除法”中使用。二、视图变换比如用库函数画一个四面体线框:gluLook
2013-06-17 11:57:10 ·
1174 阅读 ·
在公司实习,有较多的“闲暇”时间,所以没事看下《OpenGL Insights》,所说是本好书。由Patrick Cozzi, Christophe Riccio编写。Patrick Cozzi的主页是:http://www.seas.upenn.edu/~pcozzi/
2013-07-25 10:58:54 ·
1525 阅读 ·
以红宝书中示例程序9-8为例,探索glTexGen函数。一、函数原型:void glTexGen{ifd}(GLenum coord, GLenum pname, TYPE param);void glTexGen(ifd}v(GLenum coord, GLenum pname, const TYPE* param);参数一coord:GL_S, GL_T, GL_R, GL_Q;
2013-06-26 11:46:51 ·
6211 阅读 ·
作者: Patrick Cozzi and Scott Hunter3.1Introduction不要误会,我们本质上是C++开发者。我们考虑triple-pointers, partial template specialization, vtable layouts multiple inheritance。但是,由于种种原因,我们现在是full-time JavaScript开发者。
2013-08-02 16:55:19 ·
794 阅读 ·
OpenThreads与pthread不同点在于,他是根据面向对象开发的。一、OpenThreads在线程同步上不同于之前我所了解的(比如pthread),除了常用的几路,他还提出了额外的。传统的:1. 互斥量OpenThreads::Mutex类当线程使用某一资源时,先使用互斥量加锁。由于采用了面向对象机制将互斥量抽象为一个类,所以不像pthread函数那样传入个参数。Mutex
2013-07-29 17:18:23 ·
4211 阅读 ·
一、OSG中,关于文字排版的有如下几种:1. 位置2. 旋转3. 对齐4. 坐标轴对齐5. 文字而局二、详解各种属性,以输入"Hello world“为例。1. 位置顾名思义,指定文字串的起始点。void setPosition(const osg::Vec3& pos);2. 旋转设置文字旋转的角度和中心轴。void setRotation
2013-07-08 10:47:11 ·
1415 阅读 ·
一、Referenced是所有要用到引用计数的类的基类,osg::Object继承于此类。二、头文件中有个我从没见过的定义:templatestruct depends_on{ depends_on() { M(); }};模板中有个函数,在构造此模板类时就会调用(回调)此函数,并返回相应值(模板居然还有此种用法?)。三、下面分析osg::Refere
2013-06-14 16:23:18 ·
1786 阅读 ·
一、StateSet中有些是把属性类提取出设置,有些是用setMode设置,让我混乱了,是不是所有使用glEnable的都使用setMode设置?就来探索下吧!二、void StateSet::setMode(StateAttribute::GLMode mode, StateAttribute::GLModeValue value)从源码上看,mode 被分成了三类:1.
2013-06-14 16:52:08 ·
2919 阅读 ·
转自http://hi.baidu.com/niujingqian/item/58afbbcc6305c215b77a24dbglew, glee与 gl, glu, glut, glx, glext的区别和关系GLEW是一个跨平台的C++扩展库,基于OpenGL图形接口。使用OpenGL的朋友都知道,window目前只支持OpenGL1.1的涵数,但 OpenGL现在
2013-06-14 17:02:54 ·
5315 阅读 ·
《VTK OO》中4.2节说明了Object中有一种叫做“Process Objects”,Process Objects按功能又分三种:source,filter,mapper。这里借vtkConeSource来理解Source。vtkConeSource继承于vtkPolydataAlgorithm->vtkAlgorithm->vtkObject->vtkObjectBase
2013-06-14 17:07:34 ·
3173 阅读 ·
探究一下osg中的智能指针:osg::ref_ptr。一、首先注意,智能指针是个模板类(不要以为理解了这句话)。比如这样一个定义:osg::ref_ptr pArray = new osg::Vec3Array;这里,pArray本质上是一个ref_ptr对象(并非是指针),而之所以可以将new返回的指针赋给他是因为osg::ref_ptr重写了赋值操作符(关于赋值操作符的
2013-06-14 16:24:40 ·
4672 阅读 ·
一、OpenGL中设置颜色数组和法向数组是在glVertex前用glColor和glNormal。只能给顶点分配法线。可以为每个多边形指定一和法线,也可以为每个顶点指定一条法线。法线仅影响光照。二、OSG中的法量设置有如下几种方式:enum AttributeBinding { BIND_OFF=0,
2013-06-14 16:45:29 ·
6602 阅读 ·
一、OpenGL中光照模型不同于光照,他解决下面四个问题:1. 全局环境光(背景光);2. 观察点位置是位于场景还是位于无限元处;3. 物体的下面和背面是否应该执行不同的光照计算;4. 镜面颜色是否应该从环境和散射颜色中分离出来,并在纹理操作之后再应用。光照模型使用下面函数设置:void glLightModel(GLenum pname, TYPE
2013-06-14 16:54:56 ·
2696 阅读 ·
此类是关于材料属性的设置。一、从OpenGL的角度来看,材料有如下几种属性:1. 环境;2. 散射;3. 镜面颜色;4. 光泽度;5. 发射光颜色。也就是说,材料的属性必须与光照结合,才可能体现出作用。比如,给某材料设置了(1.0, 0.0, 0.0, 1.0),在没有光照的情况下,他仍是没有颜色的(或者颜色不定)。因而既然osg::Mate
2013-06-14 16:59:30 ·
2985 阅读 ·
一、所有要使用引用计数的类都是vtkObjectBase的子类。vtkObjectBase中有成员变量int ReferenceCount记录引用计数。并且提供成员函数操作引用计数。1. 得到引用计数:int GetReferenceCount(){ return ReferenceCount;}2. 设置引用计数:void SetReferenceCount(
2013-06-14 17:05:31 ·
1510 阅读 ·
一、什么叫混合直白的说,混合就是将源颜色(新片断)与目标颜色(侦缓冲区中的)进行某种组合,然后将新颜色放入侦缓冲区。另外进行混合前先要进行 Alpha 测试,决定是否接受此片断。二、混合的原理先来定义几个概念:1. 源颜色 (Rs, Gs, Bs, As)2. 目标颜色 (Rd, Gd, Bd, Ad)3. 源混合因子(Sr, Sg, Sb, Sa)
2013-06-14 16:47:16 ·
935 阅读 ·
一、分析OpenGL中的光源OpenGL中有两种光源:一般光源和全局环境光(背景光)。这两种光源的设置方法是不同的。1. 一般光源使用glLight设置;2. 全局环境光(不在此详论,见osg::LightMode)使用glLightMode设置。void glLight(GLenum light, GLenum pname, TYPE param)
2013-06-14 16:56:50 ·
2963 阅读 ·
OpenGL是状态机机制。在渲染之前,首先要设置一系统的状态,比如线宽,材料属性,纹理坐标等等。而OSG将OpenGL的每种状态封闭成了类,如OpenGl中指定线宽使用 glLineWidth() 函数,而OSG中有类 osg::LineWidth;OpenGL中用 glMaterial 指定材料属性,而 OSG 中有类 osg::Material 类。那么,这些状态如何管理使用呢?OSG
2013-06-14 17:01:15 ·
1144 阅读 ·
一、openGL中,定义了10种图元:GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, GL_POLYGON十种图元的作用比较简单,就不多介绍。二、OSG中图元的设置是通过bo
2013-06-14 16:49:46 ·
3905 阅读 ·
一、glShadeModel可以指定顶点间的顶点的颜色是如何被指定的。在单调着色模式下(GL_FLAT),整个图元的颜色就是它的最后个顶点的颜色。在平滑着色(GL_SMOOTH)下,每个顶点都单独处理,均匀插值。
2013-06-14 17:00:34 ·
916 阅读 ·
一、什么叫分格化分割化就是将非凸多边形分割为凸多边形的过程。二、为什么要引用分格化为什么要分格化?因为OpenGL不能渲染非凸多边形;OpenGL为什么不能渲染非凸多边形?因为性能的原因!OpenGL做此限制后,硬件厂商可以只提供快速的多边形渲染硬件来渲符合条件的多边形。三、如何分格化glu提供了分析化的函数。如何一个多边形需要分格化,需要执行如下几个典型步
2013-06-14 08:18:52 ·
3554 阅读 ·