⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 domsourcereader.cpp

📁 最新osg包
💻 CPP
字号:
/* * Copyright 2006 Sony Computer Entertainment Inc. * * Licensed under the SCEA Shared Source License, Version 1.0 (the "License"); you may not use this  * file except in compliance with the License. You may obtain a copy of the License at: * http://research.scea.com/scea_shared_source_license.html * * Unless required by applicable law or agreed to in writing, software distributed under the License  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  * implied. See the License for the specific language governing permissions and limitations under the  * License.  */#include "domSourceReader.h"#include <dom/domSource.h>using namespace osgdae;domSourceReader::domSourceReader() : m_array_type( None ), m_count( 0 ){}domSourceReader::domSourceReader( domSource *src ) : m_array_type( None ), m_count( 0 ){    domSource::domTechnique_common* technique = src->getTechnique_common();    if ( technique == NULL ) {        osg::notify(osg::WARN)<<"Warning: IntDaeSource::createFrom: Unable to find COMMON technique"<<std::endl;        return;    }    domAccessor* accessor = technique->getAccessor();    int stride = accessor->getStride();    m_count = accessor->getCount();    switch ( stride ) {        case 1:            m_array_type = Float;            m_float_array = new osg::FloatArray();            break;        case 2:            m_array_type = Vec2;            m_vec2_array = new osg::Vec2Array();            break;        case 3:            m_array_type = Vec3;            m_vec3_array = new osg::Vec3Array();            break;        case 4:            m_array_type = Vec4;            m_vec4_array = new osg::Vec4Array();            break;        default:            osg::notify(osg::WARN)<<"Unsupported stride: "<<stride<<std::endl;            return;    }    // Only handle floats for now...    daeDoubleArray* float_array = NULL;    if ( src->getFloat_array() != NULL ) {        float_array = &(src->getFloat_array()->getValue());    }    if ( !float_array ) {        osg::notify(osg::WARN)<<"No float array found"<<std::endl;        return;    }        daeDoubleArray& va = *float_array;    for ( size_t i = 0; i < accessor->getCount(); i++ ) {        switch ( accessor->getStride() ) {            case 1:                m_float_array->push_back( va[i] );                break;            case 2:                m_vec2_array->push_back( osg::Vec2( va[i*2], va[i*2+1] ) );                break;            case 3:                m_vec3_array->push_back( osg::Vec3( va[i*3], va[i*3+1], va[i*3+2] ) );                break;            case 4:                m_vec4_array->push_back( osg::Vec4( va[i*4], va[i*4+1], va[i*4+2], va[i*4+3] ) );                break;            default:                osg::notify(osg::WARN)<<"Unsupported stride in Source: "<<accessor->getStride()<<std::endl;                return;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -