OpenGL和OSG基础
csxiaoshui
工作已转到.NET,不再从事3D开发 ^-^
展开
-
OpenGL的视图变换与OSG漫游器
OpenGL固定管线的视图变换,以及与OSG中漫游器编写的一些关系原创 2016-06-24 11:50:00 · 4605 阅读 · 0 评论 -
OpenThreads库介绍——Thread
OpenThreads库是一个轻量级的跨平台多线程库,在2.x之前是独立发展的一个库,在2.x后并入到OSG的源码中,OSG中大量的多线程操作都是基于这个库编写的。(事实上使用该库是历史原因的问题,在OSG创立的时候,C++标准中并没有C++11引入的线程库),库的详细介绍参考:OpenThreads站点Thread线程线程实现类。它是一个面向对象的线程实现接口,每定义一个Thread...原创 2018-03-15 14:47:33 · 6798 阅读 · 0 评论 -
OpenThreads库介绍——Barrier
1. 简介Barrier是线程栅栏类。这是一个对于线程同步颇为重要的阻塞器接口,它的构造函数与BlockCount 类似,可以设置一个整数值,我们可以把这个值理解成栅栏的“强度”。每个执行了Barrier::block()函数的线程都将被阻塞;当被阻塞在栅栏处的线程达到指定的数目时,就好比栅栏无法支撑那么大的强度一样,栅栏将被冲开,所有的线程将被释放。重要的是,这些线程是几乎同时释放的,也...原创 2018-03-15 14:48:42 · 1929 阅读 · 0 评论 -
OpenThreads库介绍——Block
1. 简介Block 是OpenThreads中的阻塞器类。顾名思义,这个类的作用就是阻塞线程的执行,使用block()阻塞执行它的线程(注意,不一定是定义它的Thread 线程,而是当前执行了block 函数的线程,包括系统主进程),并使用release()释放之前被阻塞的线程。2. 实现OpenThreads库中的Block文件中包括两个类的实现:Block和Block...原创 2018-03-15 14:48:31 · 3970 阅读 · 1 评论 -
OpenThreads库介绍——Condition
1. 简介Condition 类是条件变量。它依赖于某个Mutex 互斥体,互斥体加锁时阻塞所在的线程,解锁或者超过时限则释放此线程,允许其继续运行。这里涉及了几个线程操作中重要的概念:同步,阻塞以及条件变量。线程同步,简单来说就是使同一进程的多个线程可以协调工作,例如让它们都在指定的执行点等待对方,直到全员到期之后才开始同步运行;拥塞,即强制一个线程在某个执行点上等待,直到满足继续运行的条件...原创 2018-03-15 14:48:17 · 2620 阅读 · 0 评论 -
OpenThreads库介绍——ReadWriteMutex
1. 读写锁简介OpenThreads库中的ReadWriteMutex是一种读写锁,读写锁是计算机程序的并发控制的一种同步机制,也称“共享-互斥锁”、多读者-单写者锁。多读者锁,用于解决读写问题。读操作可并发重入,写操作是互斥的。简单来说就是允许多个线程同时读取资源,但是一旦要修改资源(写操作),那么所有读的线程都必须被阻塞,直到写的线程完成修改。2. 类型读写锁可以根据实际的需...原创 2018-03-15 14:48:03 · 789 阅读 · 0 评论 -
OpenGL的Context(Profile)
OpenGL在渲染的时候需要一个Context,这个Context记录了OpenGL渲染需要的所有信息,可以把它理解成一个大的结构体,它里面记录了当前绘制使用的颜色、是否有光照计算以及开启的光源等非常多我们使用OpenGL函数调用设置的状态和状态属性。在OpenGL 3.0版本之前,OpenGL创建Context都是一致的,随着升级会新增一些内容(例如从OpenGL1.1升级到1.5,会新增一些状原创 2018-01-12 18:01:50 · 8968 阅读 · 2 评论 -
osg几何体的图元的遍历
OSG提供的通过仿函数遍历几何体的方式原创 2017-10-10 16:04:08 · 8633 阅读 · 4 评论 -
OSG可绘制体Drawable
osg中可绘制体对象原创 2017-09-29 19:22:29 · 3421 阅读 · 0 评论 -
OSG渲染状态管理
OSG对OpenGL中状态机的封装,主要介绍与此相关的几个osg的类:State\StateSet\StateAttribute原创 2017-07-10 18:25:02 · 7155 阅读 · 0 评论 -
OpenGL基本图元转换为GL_TRIANGLES
基本图元转换到三角形的处理方式原创 2017-02-09 18:24:45 · 13874 阅读 · 0 评论 -
OpenGL的列向量和OSG的行向量
OpenGL与OSG中行向量与列向量原创 2016-06-23 16:35:04 · 3086 阅读 · 1 评论 -
漫游器在椭球上的定位和变换
在椭球表面定位时,使用ECEF(Earth-Centered Earth-Fixed)与局部切平面的LTP(Local Tangent Plane)(ENU: East-North-Up)之间的变换原创 2016-06-29 09:38:14 · 2711 阅读 · 0 评论 -
OpenThreads库介绍——Mutex
1. 简介Mutex 是互斥体接口类。如同pthread 等常用的线程库那样,OpenThreads 也提供了互斥体操作的机制,它有效地避免了各个线程对同一资源的相互竞争,即,某一线程欲操作某一共享资源时,首先使用互斥体成员的lock()函数加锁,操作完成之后再使用unlock 函数解锁。一个线程类中可以存在多个Mutex 成员,用于在不同的地点或情形下为共享区域加锁;但是一定要在适当的时候解...原创 2018-03-15 14:47:49 · 1390 阅读 · 0 评论