С OpenGL знаком плохо, но вопрос касательно GL_Main: рисует ли он на двух и более контекстах?
Смысл вопроса в том, что это особенность моей карты, или общий момент. В памяти всплывает что под каждый новый HDC нужно делать его текущим.
Этот топик читают: Гость
Ответов: 211
Рейтинг: 52
|
|||
карма: 1 |
|
Ответов: 2236
Рейтинг: 676
|
|||
Minkovsky, может это: code_18209.txt (автор схемы MAV)
|
|||
карма: 11 |
| ||
файлы: 1 | code_18209.txt [3.8KB] [180] |
Ответов: 1304
Рейтинг: 405
|
|||
Minkovsky, это не особенность твоей видеокарты, GL_Main работает только с одним контекстом.
Контекст воспроизведения OpenGL чем то напоминает контекст устройства Windows, но не является тем же самым. Для того чтобы рисовать в окне Windows, вы должны сначала запросить у системы контекст устройства (т.е. окна), который связан с конкретным устройством, на котором осуществляется рисование (т.е. окно, но может быть и не окном). Далее нужно создать контекст воспроизведения OpenGL, который необходимо связать с контекстом устройства в Windows, а потом выбрать его, т.е. сделать текущим. Зачем делать его текущим? Дело в том, что можно создать много контекстов воспроизведения, каждый из них будет связан со своим устройством отображения, но для того чтобы работать в OpenGL надо выбрать только один (текущий) контекст.
подробнее http://drakonprogramm.narod.ru/opengl/init_ogl.html |
|||
карма: 3 |
|
Ответов: 211
Рейтинг: 52
|
|||
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 |
| ||
файлы: 1 | multiple_dc.zip [3.9KB] [116] | ||
Голосовали: | sla8a, MAV |
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 1 раз(а), последний 2017-03-02 18:43:08 |
|||
карма: 0 |
|
Ответов: 1304
Рейтинг: 405
|
|||
карма: 3 |
| ||
файлы: 1 | multiple_2.rar [2KB] [281] |
Ответов: 1304
Рейтинг: 405
|
|||
MAV писал(а): который можно использовать и на стандартном Оказалось нельзя, забыл что в папке лежит модифицированный GL_Main Minkovsky, если не против включу (wglMakeCurrent в doFlip) в свою модификацию GL_Main(+Anti-Aliasing) |
|||
карма: 3 |
|
Ответов: 211
Рейтинг: 52
|
|||
MAV, конечно не против.
|
|||
карма: 1 |
|
8