Пример #1
0
void ShaderEffect::Create()
{
    mProgram = glCreateProgram();

    if(HaveLimitedInOutLocationQualifier(mVSLang) == 0 || HaveLimitedInOutLocationQualifier(mPSLang) == 0)
    {
        int maxAttrib = 0;

        glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &maxAttrib);

        for(int i=0; i<maxAttrib; ++i)
        {
            std::string attribName("dcl_Input");
            //Visual Studio/Windows missing int version std::to_string, so use long long.
            attribName += std::to_string((long long)i);

            glBindAttribLocation(mProgram, i, attribName.c_str());
        }

        int maxDrawBuffers = 0;

        glGetIntegerv(GL_MAX_DRAW_BUFFERS, &maxDrawBuffers);

        for(int i=0; i<maxAttrib; ++i)
        {
            std::string pixelOutputName("PixOutput");
            pixelOutputName += std::to_string((long long)i);

            glBindFragDataLocation(mProgram, i, pixelOutputName.c_str());
        }
    }
}
    void FeatureDocumentHandler::startElement(const XMLCh* const name, AttributeList& attrs)
    {
        char elementName[1024];

        XMLString::transcode(name, elementName, 1024 - 1);
        std::string elemName(elementName);
        std::map<std::string, std::string> attributes;
        
        for (unsigned int c = 0; c < attrs.getLength() ; c++) 
        {
            char attributeName[1024];
            char attributeValue [1024];
            XMLString::transcode(attrs.getName(c), attributeName, 1024 - 1);
            XMLString::transcode(attrs.getValue(c), attributeValue, 1024 - 1);
            std::string attribName(attributeName);
            std::string attribVal(attributeValue);

            attributes.insert(Pair_Attrib(attribName, attribVal));
        }
        m_pFeatureMat->StartElement(elemName, attributes);
    }