コード例 #1
0
ファイル: WriteVisitor.cpp プロジェクト: juval/osg
// use to convert draw array quads to draw elements triangles
JSONObject* WriteVisitor::createJSONDrawElements(osg::DrawArrays* drawArray, osg::Object* parent)
{
    if (_maps.find(drawArray) != _maps.end())
        return _maps[drawArray]->getShadowObject();

    if (drawArray->getMode() != GL_QUADS) {
        osg::notify(osg::WARN) << "" << std::endl;
        return 0;
    }

    osg::ref_ptr<osg::DrawElementsUShort> de = new osg::DrawElementsUShort(GL_TRIANGLES);

    for (int i = 0; i < drawArray->getCount()/4; ++i) {
        int base = drawArray->getFirst() + i*4;
        de->push_back(base + 0);
        de->push_back(base + 1);
        de->push_back(base + 3);

        de->push_back(base + 1);
        de->push_back(base + 2);
        de->push_back(base + 3);
    }
    JSONDrawElements<osg::DrawElementsUShort>* json = new JSONDrawElements<osg::DrawElementsUShort>(*de);
    _maps[drawArray] = json;
    if(_mergeAllBinaryFiles) {
        setBufferName(json, parent, drawArray);
    }
    return json;
}
コード例 #2
0
ファイル: WriteVisitor.cpp プロジェクト: juval/osg
JSONObject* WriteVisitor::createJSONDrawArrayLengths(osg::DrawArrayLengths* da, osg::Object* parent)
{
    if (_maps.find(da) != _maps.end())
        return _maps[da]->getShadowObject();

    osg::ref_ptr<JSONDrawArrayLengths> json = new JSONDrawArrayLengths(*da);
    _maps[da] = json;
    if(_mergeAllBinaryFiles) {
        setBufferName(json.get(), parent, da);
    }
    return json.get();
}
コード例 #3
0
ファイル: WriteVisitor.cpp プロジェクト: juval/osg
JSONObject* WriteVisitor::createJSONDrawElementsUByte(osg::DrawElementsUByte* de, osg::Object* parent)
{
    if (_maps.find(de) != _maps.end())
        return _maps[de]->getShadowObject();

    JSONDrawElements<osg::DrawElementsUByte>* json = new JSONDrawElements<osg::DrawElementsUByte>(*de);
    _maps[de] = json;
    if(_mergeAllBinaryFiles) {
        setBufferName(json, parent, de);
    }
    return json;
}
コード例 #4
0
ファイル: WriteVisitor.cpp プロジェクト: juval/osg
JSONObject* WriteVisitor::createJSONBufferArray(osg::Array* array, osg::Object* parent)
{
    if (_maps.find(array) != _maps.end())
        return _maps[array]->getShadowObject();

    osg::ref_ptr<JSONBufferArray> json = new JSONBufferArray(array);
    _maps[array] = json;
    if(_mergeAllBinaryFiles) {
        setBufferName(json.get(), parent, array);
    }
    return json.get();
}
コード例 #5
0
ファイル: WriteVisitor.cpp プロジェクト: 3dcl/osg
JSONObject* WriteVisitor::createJSONDrawArrayLengths(osg::DrawArrayLengths* da, osg::Geometry* geom)
{
    if (_maps.find(da) != _maps.end())
        return _maps[da]->getShadowObject();

    osg::ref_ptr<JSONDrawArrayLengths> json = new JSONDrawArrayLengths(*da);
    json->addUniqueID();
    _maps[da] = json;
    if(geom && _mergeAllBinaryFiles) {
        setBufferName(json.get(), geom);
    }
    return json.get();
}
コード例 #6
0
ファイル: WriteVisitor.cpp プロジェクト: 3dcl/osg
JSONObject* WriteVisitor::createJSONDrawElementsUByte(osg::DrawElementsUByte* de, osg::Geometry* geom)
{
    if (_maps.find(de) != _maps.end())
        return _maps[de]->getShadowObject();

    JSONDrawElements<osg::DrawElementsUByte>* json = new JSONDrawElements<osg::DrawElementsUByte>(*de);
    json->addUniqueID();
    _maps[de] = json;
    if(geom && _mergeAllBinaryFiles) {
        setBufferName(json, geom);
    }
    return json;
}
コード例 #7
0
ファイル: WriteVisitor.cpp プロジェクト: 3dcl/osg
JSONObject* WriteVisitor::createJSONBufferArray(osg::Array* array, osg::Geometry* geom)
{
    if (_maps.find(array) != _maps.end())
        return _maps[array]->getShadowObject();

    osg::ref_ptr<JSONBufferArray> json = new JSONBufferArray(array);
    json->addUniqueID();
    _maps[array] = json;
    if(geom && _mergeAllBinaryFiles) {
        setBufferName(json.get(), geom);
    }
    return json.get();
}