#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 имеет дело только с одним примитивом (= треугольник, квадрат, точка, линия) одновременно, и при рендеринге нет какой-либо постоянства.