Пример #1
0
std::string AbstractObject::getLabelImplementationKhr(const GLenum identifier, const GLuint name) {
    /* Get label size (w/o null terminator). Specifying 0 as size is not
       allowed, thus we pass the maximum instead. */
    GLsizei size = 0;
    #ifndef MAGNUM_TARGET_GLES
    glGetObjectLabel(identifier, name, maxLabelLength(), &size, nullptr);
    #elif !defined(CORRADE_TARGET_NACL)
    glGetObjectLabelKHR(identifier, name, maxLabelLength(), &size, nullptr);
    #else
    static_cast<void>(identifier);
    static_cast<void>(name);
    CORRADE_ASSERT_UNREACHABLE();
    #endif

    /* Make place also for the null terminator */
    std::string label;
    label.resize(size+1);
    #ifndef MAGNUM_TARGET_GLES
    glGetObjectLabel(identifier, name, size+1, nullptr, &label[0]);
    #elif !defined(CORRADE_TARGET_NACL)
    glGetObjectLabelKHR(identifier, name, size+1, nullptr, &label[0]);
    #else
    CORRADE_ASSERT_UNREACHABLE();
    #endif

    /* Pop null terminator and return the string */
    label.resize(size);
    return label;
}
Пример #2
0
std::string AbstractObject::getLabelImplementationKhr(const GLenum identifier, const GLuint name) {
    /**
     * @todo Get rid of this workaround when NVidia returns proper size for
     *      length=0 & label=nullptr (even crashes on length>0 & label=nullptr)
     */
    #if 0
    /* Get label size (w/o null terminator) */
    GLsizei size;
    #ifndef MAGNUM_TARGET_GLES
    glGetObjectLabel(type, name, 0, &size, nullptr);
    #else
    glGetObjectLabelKHR(type, name, 0, &size, nullptr);
    #endif

    /* Make place also for the null terminator */
    std::string label;
    label.resize(size+1);
    #ifndef MAGNUM_TARGET_GLES
    glGetObjectLabel(identifier, name, size+1, nullptr, &label[0]);
    #else
    glGetObjectLabelKHR(identifier, name, size+1, nullptr, &label[0]);
    #endif

    /* Pop null terminator and return the string */
    label.resize(size);
    return label;
    #else
    GLsizei size;
    std::string label;
    label.resize(maxLabelLength());
    /** @todo Re-enable when extension loader is available for ES */
    #ifndef MAGNUM_TARGET_GLES
    glGetObjectLabel(identifier, name, label.size(), &size, &label[0]);
    #else
    static_cast<void>(identifier);
    static_cast<void>(name);
    CORRADE_INTERNAL_ASSERT(false);
    //glGetObjectLabelKHR(identifier, name, label.size(), &size, &label[0]);
    #endif
    return label.substr(0, size);
    #endif
}