LINUX.ORG.RU

X-Window: SDL создает X-окно, нужно получить его ID.


0

0

Для чего вся эта канитель: хочу Заюзать pBuffer-ы (pixel buffer, внеэкранный рэндер-буффер) в OpenGL.

SDL создает X-окно (наверное с помощью XCreateWindow);
Потом SDL инициализирует OpenGL, создается OpenGL-контекст и привязывается к этому окну, вот так:
...
glXMakeCurrent(display, drawable, glxContext); // в drawable задается созданное окно.
...

Но это все эссесно скрыто от SDL программиста.

Мне надо:

Создать pBuffer; //Вроде как разобрался как это сделать, он будет в роли drawable.
Создать для него контекст;
Связать контекст и pBuffer:
...
glXMakeCurrent(display, drawable, glxContext); // в drawable задается pBuffer.
...

Эти контексты нужно постоянно менять:
То еть рендерить то в окно, то в pBuffer.

То еть надо запомнить контекст (glXGetCurrentContext) и drawable (ID X-окна) Созданных SDLом, чтоб потом туда вернутся.

Для организации всего этого мне пока не хватает малого - узнать ID X-окна, которое (ID) можно засунуть в drawable.
Как его узнать?

P.S. Можно забить на SDL (автоматически отпадет эта проблемма, но вместе с кроссплатформенностью :( ), и все
инициализировать "на низком уровне" через GLX функции, но пока не хочеццо.


Насчет SDL - вроде _документированных_ методов сделать такое нет,
но я и не искал особо.
Для внеэкранного рендеринга - EXT_framebuffer_object.
Без системо-зависимого кода, без дорогих переключений контекста
Правда это расширение не так давно появилось ...

anonymous
()
Ответ на: комментарий от anonymous

Вопрос решен! Всем спасибо!

> Насчет SDL - вроде _документированных_ методов сделать такое нет
Метод нашелся, павда средствами GLX (ессесно).

> Для внеэкранного рендеринга - EXT_framebuffer_object.
У меня GF2MX400 32mb, ессесно этим экстеншном и не пахнет.
А игра (игру я пишу короче: OpenGL accelerated 2d) должна запускатся и на более убогих GPU.
> без дорогих переключений контекста
А насколько они дорогие?

fifajan
() автор топика
Ответ на: комментарий от fifajan

> Метод нашелся, павда средствами GLX (ессесно). glXGetCurrent{Context,Drawable} ?

> А насколько они дорогие? RenderToTexture демо движка Ogre : используя P-Buffer : 46 fps использую FBO : 53 fps

anonymous
()
Ответ на: комментарий от anonymous

> glXGetCurrent{Context,Drawable} ?

Ага, именно.

> RenderToTexture демо движка Ogre : используя P-Buffer : 46 fps использую FBO : 53 fps

Не так уж страшно... я думал дороже. К стати, может еще кто-то искать будет:

Использование pBuffer в SDL OpenGL (GLX):

http://www.libsdl.org/pipermail/sdl/2004-May/062374.html

fifajan
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.