2015-01-31 2 views
1

Я использую MacBook Pro (13 дюймов, середина 2010 года), и я работаю с OpenGL. Я заметил, некоторые функции пропускают в библиотеке. Я нашел спецификации в Интернете о своем оборудовании, и он говорит: «поддержка OpenGL 3.3». Странно, поэтому я напечатал свою версию OpenGL и . Это 2,2, 3,3!. (Тогда я обнаружил, что новейшие MacBooks (2014) имеют ту же OpenGL версию 2.1, WTF)OpenGL - расширение ARB

Тогда я почти прыгнул из окна. (JK)

Я искал что-то около 2.1 с некоторым расширением ARB, но нет документации, нет использования, никто ее не использует. Может ли кто-нибудь объяснить мне, пожалуйста, что это? Как это использовать? В чем разница?

Я читал (если я хорошо понимаю), вместо нового OpenGL 3.X есть расширение ARB, которое похоже или что-то в этом роде. Надеюсь, что, если они напишут спецификации, она поддерживает версию 3.3, ARB должен быть тем же (по крайней мере, те же функции).

Буду рад, если кто-нибудь объяснит мне, что происходит.

Вопрос:

У меня проблема с многовыборочного текстуры для FBO рисунка. Он может быть создан функцией glTexImage2DMultisample с параметром GL_TEXTURE_2D_MULTISAMPLE. Это от версии 3.2 или терки.

Итак, что я должен использовать, или это возможно сделать с помощью ARB?

Я нашел GL_ARB_multisample в библиотеке. Что это? Любое использование? Все функции, которые я нашел в Интернете, отсутствуют. В заголовке есть несколько определений, таких как GL_MULTISAMPLE_ARB. Я попытался включить его по glEnable (GL_MULTISAMPLE также определен), он не работает.

Пожалуйста, помогите мне. :(

Edit:

Если вы знаете другой способ решить эту проблему, я был бы счастлив

Оригинальный вопрос:.OpenGL - FBO and alpha blending

+4

OS X использует профиль Legacy по умолчанию для всех созданных контекстов OpenGL, и это 2.1. Вы должны сказать, что хотите использовать Core Profile (3.2+). Посмотрите на мой [ответ] (http://stackoverflow.com/a/20932820/1960455) на вопрос [Shader не может быть скомпилирован] (http://stackoverflow.com/q/20931528/1960455) –

+1

Кроме того [Что означает ARB в функциях opengl?] (http://stackoverflow.com/q/2033514/1960455): они используются создателями драйверов для поддержки функций, которые, скорее всего, будут в следующей версии OpenGL , Функции и константы имеют префикс ARB, чтобы указать, что они не являются частью реальной версии OpenGL, которую вы используете. Помимо этой префиксы, как правило, нет никакой разницы между официальной документацией. –

+0

Хорошо, теперь я могу использовать функции, но все кажется сломанным. Если я использую 'glBindTexture',' glTexImageMultisample' или пытаюсь получить номер 'GL_MAX_COLOR_TEXTURE_SAMPLES', я получаю ошибку' glGetError' 'GL_INVALID_ENUM' или' GL_INVALID_OPERATION'. Я прочитал ваш ответ, и вы использовали библиотеку GLUT. Что делать, если я не использую GLUT? Как правильно использовать/включить его? Благодарю. – eSeverus

ответ

1

Вы должны переключить OpenGL контекст от Легаси к Основной профиль требует определенных изменений в коде. Вы должны перенести свой код и шейдеры, потому что это новая версия OpenGL и GLSL. Проверьте официальное видео, как перенести и переписать функции для проверки кода для нового v ersion. Apple Developer Site - OpenGL (Видео справа).

Важно, что вы должны сделать, это добавить #import <OpenGL/gl3.h>, и все функции будут видны для использования.

Чтобы заставить его работать и отлаживать шейдеры, необходимо установить NSOpenGLPixelFormat. Добавить NSOpenGLPFAOpenGLProfile ключ с NSOpenGLProfileVersion3_2Core значение для NSOpenGLPixelFormatAttribute массива:

NSOpenGLPixelFormatAttribute attribs[] = { 
    // ... 
    NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core, 
    // ... 
}; 

Это поможет вам отладки кода.

Большое спасибо за помощь, и я надеюсь, это поможет вам.