Вверх ↑
Этот топик читают: Гость
Ответов: 211
Рейтинг: 52
#1: 2010-05-13 00:57:42 ЛС | профиль | цитата
С OpenGL знаком плохо, но вопрос касательно GL_Main: рисует ли он на двух и более контекстах?
Смысл вопроса в том, что это особенность моей карты, или общий момент. В памяти всплывает что под каждый новый HDC нужно делать его текущим.
карма: 1
слтв
0
Ответов: 2236
Рейтинг: 676
#2: 2010-05-13 13:09:34 ЛС | профиль | цитата
Minkovsky, может это: code_18209.txt (автор схемы MAV)
карма: 11

0
файлы: 1code_18209.txt [3.8KB] [180]
Ответов: 1304
Рейтинг: 405
#3: 2010-05-13 23:53:42 ЛС | профиль | цитата
Minkovsky, это не особенность твоей видеокарты, GL_Main работает только с одним контекстом.
Контекст воспроизведения OpenGL чем то напоминает контекст устройства Windows, но не является тем же самым. Для того чтобы рисовать в окне Windows, вы должны сначала запросить у системы контекст устройства (т.е. окна), который связан с конкретным устройством, на котором осуществляется рисование (т.е. окно, но может быть и не окном). Далее нужно создать контекст воспроизведения OpenGL, который необходимо связать с контекстом устройства в Windows, а потом выбрать его, т.е. сделать текущим. Зачем делать его текущим? Дело в том, что можно создать много контекстов воспроизведения, каждый из них будет связан со своим устройством отображения, но для того чтобы работать в OpenGL надо выбрать только один (текущий) контекст.

подробнее
http://drakonprogramm.narod.ru/opengl/init_ogl.html
карма: 3

0
Ответов: 211
Рейтинг: 52
#4: 2010-05-14 00:20:38 ЛС | профиль | цитата
sla8a, Спасибо, реализацию посмотрел.
В прилагаемом hiGL_Main.pas очередной эксперимент над методами doViewPort и doFlip. В них повторно устанавливается контекст вызовом wglMakeCurrent.
Нюанс касается wglMakeCurrent в doFlip. Предположительно функция медлительная, и может снизить производительность этого критичного ко времени исполнения метода.
Логично предположить, что в реализации wglMakeCurrent производится проверка на установку текущего контекста текущим и тогда exit, в этом случае потеря времени будет незначительна.
В противном случае, можно проверить количество инстанций для класса THIGL_Main и если оно равно одному экземпляру - невызывать wglMakeCurrent.
Но это так, мысли в слух...
Схема Project1.sha и hiGL_Main.pas в архиве Multiple_DC.zip в прищепке.
P.s. Убедительная просьба сохранять заменяемые файлы.
P.P.s.MAV, пока "рисовал" свой пост, пропустил Ваш. Спасибо за ответ, интересен еще один метод wglShareLists., но это потом.
карма: 1
слтв
2
файлы: 1multiple_dc.zip [3.9KB] [116]
Голосовали:sla8a, MAV
Гость
Ответов: 17029
Рейтинг: 0
#5: 2010-05-14 23:28:09 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-02 18:43:08
карма: 0

0
Ответов: 1304
Рейтинг: 405
#6: 2010-05-14 23:30:51 ЛС | профиль | цитата
Это был MAV.
пример:
http://www.hiasm.com//getfile/18258
карма: 3

0
файлы: 1multiple_2.rar [2KB] [281]
Ответов: 1304
Рейтинг: 405
#7: 2010-05-20 21:05:37 ЛС | профиль | цитата
MAV писал(а):
который можно использовать и на стандартном

Оказалось нельзя, забыл что в папке лежит модифицированный GL_Main
Minkovsky, если не против включу (wglMakeCurrent в doFlip) в свою модификацию GL_Main(+Anti-Aliasing)

карма: 3

0
Ответов: 211
Рейтинг: 52
#8: 2010-05-20 22:32:27 ЛС | профиль | цитата
MAV, конечно не против.
карма: 1
слтв
0
8
Сообщение
...
Прикрепленные файлы
(файлы не залиты)