A: OpenGL book Q: OpenGL compatibility

Отвечаю сам себе, вдруг кому-то еще интересно.

  1. Из всех просмотренных книжек больше всего показалась Learning Modern 3D Graphics Programming, потому что она от fixed pipeline полностью отвязана. Только OpenGL 3+, только хардкор (хотя CoreProfile в Qt и не работает нормально, текстуры не аплоадятся).

    PDF-ная версия и примеры берутся отсюда.

    Буду теперь ея читать.

  2. Вообще, оно (OpenGL) отвратительное. Вот, например:
    glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject);
    glEnableVertexAttribArray(0);
    glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
    И теперь надо запомнить, что glVertexAttribPointer() работает с тем буфером, которому сделали Bind() последнему. Как-то это не так, неправильно.

    Отчего в glVertexAttribPointer не передается идентфикатор буфера?

  3. Отвратительно оно и в частности. Более всего меня потрясло, когда Qt-шный пример с крутящимися кубиками (и текстурами с цифрами 1-6 на гранях) я запустил на WinXP под VMWare. Кубики крутились, но грань у кубиков была одна, последняя (с шестеркой), предыдущие пять текстур куда-то подевались. Это не OpenGL3 (на VMWare только 2.1). На Win7 в той же VMWare - у кубиков по 6 граней, но отображается на всех - только одна текстура, первая. Смеялсо.
Отсюда вопросы:
  • Оно вообще с совместимостью как? Можно ли рассчитывать, что OpenGL-приложение вообще работает (на случайно отобранной системе), или это сильно как повезет?
  • Сужая предыдущий вопрос: если требовать OpenGL 3+, то не будет ли с совместимостью лучше (на тех системах, естественно, где этот самый 3+ есть)?
  • Ну и чего я лишаюсь, требуя 3+ (т.е. оборудование класса DX10, как я понимаю)? Ну вот я сам накопал: Mac OS 10.6 и старше, интеловская встроенная графика старше SandyBridge, а еще что?

Comments

Да, раздражает необходимость помнить о "состоянии". Работает не везде, но в мелочах - какие-то флаги текстурные не так, как ожидешь etc

"не везде, но в мелочах" - какой версией OpenGL вы пользуетесь в реальной жизни?

Сейчас никакой, а тогда - какой-то старой. И то, работало неодинаково, например CLAMP_TO_EDGE_EXT
Спаибо за книжку, как раз хотел ознакомиться с современным состоянием

Ну, теряем все винды ниже Висты.

Казалось бы, от железа зависит.

Вот что NVidia пишет про свой очередной драйвер:

Windows driver version 280.47 and Linux drivers version 280.10.01.04 provide full support for OpenGL 4.2 and GLSL 4.20 on capable hardware.

А драйвер 280-й (и 296-й - из релизных) для XP есть.

Маки - другая история, хотя вот надо посмотреть, что происходит с маками если поставить драйвер для CUDA.

Я имел в виду DX10. Без его водружения заведется?

да вроде да, нет связи.

Во, в википедии пишут: OpenGL 3.0 does not require Windows Vista and can be used on any OS for which the appropriate drivers are provided.

Совершенно не понимаю, зачем тебе программируемый геометрический пайплайн для двумерной графики.

Ну насколько я успел разобраться, есть большая разница в API.

На уровне сетапа геометрии? Да брось ты, я вообще glut'ом обошелся, и тебе наверняка хватит. Это полтора десятка вызовов, ты в жежешечку уже больше написал.

Да, для моих задач вообще всего хватает (хотя вот поведение в VMware чужих примеров - удивляет).

Но раз уж я туда полез - я хочу постичь суть. И, соответственно, хочется чтобы этой сути было поменьше :)

Что про DX, что про OpenGL суть ты будешь постигать всю жизнь. Потому что каждую неделю ты будешь открывать расширение которое делает такоооое! Пока не нароешь расширение, которое читает и рендерит RAW :-)

Боюсь, что расширение, которое рендерит RAW - сам и напишу со временем.

Там я тоже был (в смысле был: подошел к двери, прочитал меню, охуел и ушел). Это ОЧЕНЬ дорого.

Про DX - нет вроде, там в современных версиях все зафиксировано. В GL там вроде все еще бардак.

Свободные драйвера в ныне актуальных линупсах еще не доросли до третьей версии, но через пару лет нормально будет.

Десктопный линукс и так чтобы *обязательно* свободные драйвера - это не моя целевая аудитория совсем.