osg自定义场景物体和设置状态集

2024-06-07 18:18

本文主要是介绍osg自定义场景物体和设置状态集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

                      欢迎关注公众号可以查看更多完整文章

osg自定义场景物体,也就是模型,主要是通过设置顶点数据、顶点颜色数据、顶点索引集、法线数据集合等数据才能看到模型。

自定义模型需要使用Geometry来接收设置的数据,Geometry类提供了接收上述各种数据的接口。

如果想给状态集StateSet设置某些属性,可以通过接口setAttributeAndModes来设置:比如深度测试、模板测试、线宽等继承自StateAttribute的子类,也可以自定义状态属性。

#include <osg/Geode>
#include <osgViewer/Viewer>
#include <osg/Geometry>
#include <osg/LineWidth>
#include <osg/StateAttribute>using namespace osg;
using namespace osgViewer;#pragma comment(lib,"osgViewerd.lib")
#pragma comment(lib,"osgd.lib")ref_ptr<Geode> GetScene()
{//顶点数据ref_ptr<Vec3Array> va = new Vec3Array;va->push_back(Vec3(1.0, 0.0, 1.0));va->push_back(Vec3(-1.0, 0.0, 1.0));va->push_back(Vec3(-1.0, 0.0, -1.0));va->push_back(Vec3(1.0, 0.0, -1.0));//顶点颜色ref_ptr<Vec4Array> ca = new Vec4Array;ca->push_back(Vec4(1.0, 0.0, 0.0, 1.0));ca->push_back(Vec4(0.0, 1.0, 0.0, 1.0));ca->push_back(Vec4(0.0, 0.0, 1.0, 1.0));ca->push_back(Vec4(1.0, 1.0, 1.0, 1.0));ca->setBinding(Array::BIND_PER_VERTEX);//新的添加方式,原来通过Geometry绑定的接口已经废弃//法线ref_ptr<Vec3Array> na = new Vec3Array;na->push_back(Vec3(0.0, -1.0, 0.0));//数据组合ref_ptr<Geometry> geo = new Geometry;geo->setVertexArray(va);//添加顶点数据geo->setColorArray(ca);//添加颜色数据geo->setNormalArray(na);//添加法线数据geo->addPrimitiveSet(new DrawArrays(PrimitiveSet::LINE_LOOP,0,4));ref_ptr<Geode> node = new Geode;node->addDrawable(geo);//设置 线宽ref_ptr<LineWidth> lw = new LineWidth;lw->setWidth(10.f);geo->getOrCreateStateSet()->setAttributeAndModes(lw, StateAttribute::ON);return node;
}int main(int argc, char **argv)
{Viewer viewer;viewer.setSceneData(GetScene().get());viewer.realize();viewer.run();
}

本文地址:osg自定义场景物体和设置状态集_GreenArrowMan-CSDN博客-CSDN博客

这篇关于osg自定义场景物体和设置状态集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1039933

相关文章

idea设置快捷键风格方式

《idea设置快捷键风格方式》在IntelliJIDEA中设置快捷键风格,打开IDEA,进入设置页面,选择Keymap,从Keymaps下拉列表中选择或复制想要的快捷键风格,点击Apply和OK即可使... 目录idea设www.chinasem.cn置快捷键风格按照以下步骤进行总结idea设置快捷键pyth

MyBatis配置文件中最常用的设置

《MyBatis配置文件中最常用的设置》文章主要介绍了MyBatis配置的优化方法,包括引用外部的properties配置文件、配置外置以实现环境解耦、配置文件中最常用的6个核心设置以及三种常用的Ma... 目录MyBATis配置优化mybatis的配置中引用外部的propertis配置文件⚠️ 注意事项X

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng

kafka自定义分区器使用详解

《kafka自定义分区器使用详解》本文介绍了如何根据企业需求自定义Kafka分区器,只需实现Partitioner接口并重写partition()方法,示例中,包含cuihaida的数据发送到0号分区... 目录kafka自定义分区器假设现在有一个需求使用分区器的方法总结kafka自定义分区器根据企业需求

Java JAR 启动内存参数配置指南(从基础设置到性能优化)

《JavaJAR启动内存参数配置指南(从基础设置到性能优化)》在启动Java可执行JAR文件时,合理配置JVM内存参数是保障应用稳定性和性能的关键,本文将系统讲解如何通过命令行参数、环境变量等方式... 目录一、核心内存参数详解1.1 堆内存配置1.2 元空间配置(MetASPace)1.3 线程栈配置1.

C#借助Spire.XLS for .NET实现Excel工作表自动化样式设置

《C#借助Spire.XLSfor.NET实现Excel工作表自动化样式设置》作为C#开发者,我们经常需要处理Excel文件,本文将深入探讨如何利用C#代码,借助强大的Spire.XLSfor.N... 目录为什么需要自动化工作表样式使用 Spire.XLS for .NET 实现工作表整体样式设置样式配置

Java中接口和抽象类的异同以及具体的使用场景

《Java中接口和抽象类的异同以及具体的使用场景》文章主要介绍了Java中接口(Interface)和抽象类(AbstractClass)的区别和联系,包括相同点和不同点,以及它们在实际开发中的具体使... 目录一、接口和抽象类的 “相同点”二、接口和抽象类的 “核心区别”关键区别详解(避免踩坑)三、具体使

Java发送SNMP至交换机获取交换机状态实现方式

《Java发送SNMP至交换机获取交换机状态实现方式》文章介绍使用SNMP4J库(2.7.0)通过RCF1213-MIB协议获取交换机单/多路状态,需开启SNMP支持,重点对比SNMPv1、v2c、v... 目录交换机协议SNMP库获取交换机单路状态获取交换机多路状态总结交换机协议这里使用的交换机协议为常

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的