Pergunta

Eu sei que mistura OpenGL e DirectX não é recomendado, mas eu estou tentando construir uma ponte entre duas aplicações diferentes que usam gráficos separados API: s e eu estou esperando há uma técnica para a partilha de dados, especificamente texturas

Eu tenho uma textura que é criado no Direct3D como esta:

d3_device-> CreateTexture(width, height,
  1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT,
  &texture, NULL);

Existe alguma maneira eu posso usar esta textura de OpenGL sem tomar uma ida e volta através da memória do sistema?

Foi útil?

Solução

No.

Pense nisso como compartilhar uma imagem no photoshop e outro visualizador de imagens. Você precisaria de uma biblioteca de gerenciamento de memória que esses dois aplicativos compartilhados.

Outras dicas

SIM. Como publicado anteriormente (ver abaixo) não devem existir, pelo menos, uma solução. Eu encontrei duas soluções possíveis:

1) Em cartões nvidia uma nova extensão foi integrado nos 256 dirvers. consulte http://developer.download.nvidia.com/opengl/specs/WGL_NV_DX_interop. txt

2) DXGI é a força motriz para compostas todas as janelas no Windows Vista e Windows 7. ver msdn.microsoft.com/en-us/library/ee913554.aspx

Eu ainda não fez experiência com qualquer solução, mas espero encontrar algum tempo para um teste deles. Mas para mim o primeiro parece ser o mais fácil.


[Eu acho que deveria ser possível. Na versão recente do Windows (Vista e 7) pode-se ver uma prévia de qualquer conteúdo da janela na barra de tarefas (se o seu GDI, Direct3D ou OpenGL). Para meu conhecimento pré-visualização OpenGL não era suportado em versões anteriores do Windows. Assim, pelo menos na versão mais recente deve haver uma possibilidade de casal ou compartilhar tornar contextos, mesmo entre diferentes processos ... Isto também é verdade para outras plataformas modernas, que tornam share sistema contextos ampla para fazer diferentes efeitos de renderização.]

Eu acho que não é possível. Como ambos têm modelos diferentes de uma textura.

Você não pode acessar a memória de textura diretamente, sem o DirectX ou OpenGL.

otherway volta: Se for possível, você deve ser capaz de recuperar o endereço textura, sua altura, largura e outros (dependente de hardware) informações de layout de memória e criar um dummytexture no outro sistema e empurre os dados recuperados em sua apenas criado objeto textura. Isso não é possível

Obviamente, isso não vai funcionar em qualquer hardware descer, e se assim não seria muito portátil.

Eu não acho que é possível sem ter que baixar os dados em memória do host e re upload-lo na memória do dispositivo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top