OSG学习:裁剪变换(2)
接着上一篇博客说。
还有一种裁剪的方法:osg::Scissor类。
这个类封装了OpenGL中的glScissor()函数。
该类主要用于设置一个视口裁剪平面举行。设置裁剪平面举行的函数如下:
void setScissor(int x, int y, int width, int height)
//参数表示一个平面举行的信息(左下角坐标、宽度和高度)
上面的代码同样只是设置了一个视口裁剪平面举行,如果要启用该裁剪平面,可以用下面的方法:
root->getOrCreateStateSet()->setAttributeAndModes(cc, osg::StateAttribute::ON);
示例代码
#include <osgViewer/Viewer>
#include <osg/Node>
#include <osg/Geode>
#include <osg/Group>
#include <osg/Scissor>
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>
#include <osgUtil/Optimizer>
int main()
{
osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer() ;
//创建一个裁剪面
osg::ref_ptr<osg::Scissor> cc = new osg::Scissor () ;
//设置裁剪面矩形信息(左下角坐标、宽度和高度)
cc->setScissor(150,150,800,600);
osg::ref_ptr<osg::Group> root = new osg::Group();
//读取模型
osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("cow.osg");
root ->addChild (node.get()) ;
//启用裁剪平面
root ->getOrCreateStateSet()->setAttributeAndModes(cc.get(), osg::StateAttribute ::ON ) ;
//优化场景数据
osgUtil::Optimizer optimzier ;
optimzier.optimize(root.get());
viewer->setSceneData(root.get());
viewer->realize();
viewer->run();
return 0;
}
结果图:
OSG学习:裁剪变换(2)的更多相关文章
- OSG学习:位置变换节点示例
osg::PositionAttitudeTransform节点. #include <osgViewer\Viewer> #include <osg\Node> #inclu ...
- osg学习示例之遇到问题四骨骼动画编译osgCal
osg学习示例之遇到问题四骨骼动画编译osgCal 转自:http://blog.csdn.net/wuwangrun/article/details/8239451 今天学到书<OpenSce ...
- OSG学习:裁剪变换(1)
在OSG中,默认了6个裁剪平面以去除没有必要显示的物体.也可以自己定义其他的裁剪平面来确定裁剪. osg::ClipPlane类继承自osg::StateAttribute类,封装了OpenGL中的g ...
- SharpGL学习笔记(六) 裁剪变换
在OpenGL中,除了视景体定义的6个裁剪平面(上下左右前后)外, 用户还可以定义一个或者多个附加的裁剪平面,以去掉场景中无关的目标. 附加平面裁剪函数原型如下: ClipPlane(OpenGL.G ...
- 【OSG学习笔记之一:】OSG+VS2010+win7 64位环境搭建
虽然出生的时候,没有说过“Hello World!”,但是自从走上了编程之路,每一次输出“Hello World!”的时候,都觉得好比中了彩票大奖似的: 仔细算算,从2012年暑假到现在,经历了3年半 ...
- OSG学习:自动对齐节点示例
/********************************************************** *Write by FlySky *zzuxp@163.com http://w ...
- osg学习笔记3 简单几何模型
osg::Geode (geometry node) osg::Geode类表示场景中的渲染几何叶节点,它包含了渲染用的几何信息,没有子节点. 要绘制的几何数据保存在osg::Geode管理的一组os ...
- osg学习笔记2, 命令行参数解析器ArgumentParser
ArgumentParser主要负责命令行参数的读取 #include <osgDB/ReadFile> #include <osgViewer/Viewer> int mai ...
- OSG学习:计算纹理坐标
在很多时候,直接指定纹理坐标是非常不方便的,如曲面纹理坐标,只有少数的曲面(如圆锥.圆柱等)可以在不产生扭曲的情况下映射到平面上,其他的曲面在映射到表面时都会产生一定程度的扭曲.一般而言,曲面表面的曲 ...
随机推荐
- 20145207 2016-2017《Java程序设计》课程总结
20145207 2016-2017<Java程序设计>课程总结 目录 一.每周作业及实验报告链接汇总 二.关于博客 自认为写得最好一篇博客是?为什么? 作业中阅读量最高的一篇博客是?谈谈 ...
- 20145226夏艺华 网络对抗技术 EXP9 web安全基础实践
20145226夏艺华 网络对抗技术 EXP9 web安全基础实践 !!!免考项目:wannacry病毒分析+防护 一.实验后回答问题 SQL注入攻击原理,如何防御 攻击原理 "SQL注入& ...
- Caused by: java.lang.IllegalArgumentException: Modifying queries can only use void or int/Integer as return type!
Caused by: java.lang.IllegalArgumentException: Modifying queries can only use void or int/Integer as ...
- Noip前的大抱佛脚----考场配置
(global-linum-mode t) (global-set-key (kbd "RET") 'newline-and-indent) (setq default-tab-w ...
- c++ 创建二叉树
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> ...
- SpringCloud-微服务网关ZUUL(六)
前言:前面说过,由于微服务过多,可能某一个小业务就需要调各种微服务的接口,不可避免的就会需要负载均衡和反向代理了,以确保ui不直接与所有的微服务接口接触,所以我们需要使用一个组件来做分发,跨域等各种请 ...
- cvc-complex-type.2.4.a: Invalid content was found starting with element 'display-name'
cvc-complex-type.2.4.a: Invalid content was found starting with element 'display-name'. One of '{&qu ...
- 程序员 vs HR(皮这么一下很开心)
最近网络上一段 HR VS 程序员 的表情包火了 来来来 我们近距离感受下 来源|网络:http://t.cn/RuTKC8B 哈哈哈!大家可以留言说说你们面试时候的趣事 更多内容关注公众号:51re ...
- js中哈希表的几种用法总结
本篇文章只要是对js中哈希表的几种用法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 1. <html> <head> <script type=" ...
- 从hs_strcpy谈安全——缓冲区溢出
对于大多数的博友来说,hs_strcpy一定会很陌生,因为这个hs_strcpy这个关键字和我的工作有挂钩.本来目前就职于恒生电子,hs_strcpy是中间件中公司定义的字符串拷贝方法,在工作业余之余 ...