Как нарисовать один и тот же чертеж opengl в двух разных окнах borland Builder?

#c #opengl #c builder

#c #opengl #c builder

Вопрос:

У меня есть одна форма окна borland builder, в которой отображается элемент opengl по таймеру. И я хочу нарисовать этот элемент opengl одновременно в другом окне borland builder.

Должен ли я использовать объекты буфера пикселей или объекты буфера фрейма? с помощью glReadPixels ? или glBindFramebuffer? Когда мне нужно вызывать эти функции? до моего рисования или после?

Или проще вызвать RC или DC моей первой формы во второй форме? Если это возможно, как я могу это назвать?

Ответ №1:

Создайте дополнительные контексты OpenGL для других окон, предоставьте общий доступ к объектам контекста, используя wglShareLists которые также предоставляют общий доступ к текстурам.

  • Если должен быть виден один и тот же вид (одинаковое разрешение, рендеринг и т.д.): используйте текстуру в качестве вложения цветового буфера объекта framebuffer, рисуйте в этом FBO. Затем нарисуйте текстурированные квадратики, используя эту текстуру, во всех окнах.

  • Если вид разный: визуализируйте каждое окно по отдельности.

Пожалуйста, не говорите, что не существует такой вещи, как «элемент OpenGL». OpenGL имеет дело только с одним примитивом (= треугольник, квадрат, точка, линия) одновременно, и при рендеринге нет какой-либо постоянства.