Ну, есть бесчисленное множество причин, почему это не будет работать.
Во-первых, «выделенный диапазон памяти контекста OpenGL» всегда меняется. Контексты OpenGL выделяют новую память и освобождают ее по мере ее принятия.
Во-вторых, я бы не стал доверять OpenGL-драйверу, чтобы выжить в таких условиях памяти, как это. Несколько контекстов OpenGL могут сосуществовать, но только потому, что они все знают друг о друге, и водитель может поэтому компенсировать их. Очень маловероятно, что контекст может ассимилировать изменения, сделанные другим контекстом.
В-третьих, графические процессоры часто работают с графической памятью. Даже если вы можете использовать mmap
на GPU-памяти (что само маловероятно), вы, вероятно, потеряете много производительности, когда сможете. И память GPU перетасовывается гораздо больше, чем память процессора.
Возможно, вы пытаетесь сделать графику на основе IPC. Лучше всего было бы, чтобы графическая система была собственным процессом, с которым вы общаетесь с помощью методов IPC, вместо того, чтобы пытаться разговаривать с OpenGL через IPC.
Это не будет работать. Отображение буфера не гарантирует получение адреса памяти GPU. Или адрес памяти процессора. –
@Nicol - вы не можете mmap адрес буфера, но это единственный способ получить действительный адрес памяти буфера openGL, который отображается в его адресном пространстве процессора –