Para treinar um algoritmo de aprendizado de máquina, precisamos renderizar alguma geometria no OpenGL sem qualquer suporte de renderização de hardware (sem placa gráfica). Estávamos pensando em renderizar em software puro e já vimos o Mesa. Parece que ele é capaz de renderizar em software puro, mas até agora só obtemos o OpenGL 2.x, enquanto precisamos do OpenGL 3.3.
Alguém sabe se isso é possível? e se sim, como? Parece que nos deparamos com obstáculos o tempo todo.
(Antecedentes, por que queremos fazer isso: para treinar o algoritmo de aprendizado, precisamos executar várias execuções de nosso software em um cluster de PC, o que não permite a renderização em hardware.)
Quaisquer dicas, idéias e ponteiros serão apreciados.
software-rendering
Gabriel
fonte
fonte
Respostas:
Estou confuso com suas necessidades. Você está executando o código em um PC ou sistema incorporado? Se você estiver executando em algo que remotamente se pareça com um PC, "qualquer suporte à renderização de hardware" simplesmente não é verdade. No mínimo, você tem algumas coisas integradas da Intel. Ainda não vi um sistema decapitado que fisicamente não possuía um chip de vídeo.
Em um sistema sem cabeça, você pode renderizar sem uma janela. Como fazer isso com o GLX, você pode ver detalhes no OpenGL sem janelas . De qualquer forma, mesmo o hardware mais ruim será mais eficiente que um renderizador de software.
Se você realmente está preocupado e absolutamente não possui hardware gráfico, pode usar algo como o VirtualGL .
Mas se você está sintetizando imagens em software usando o OpenGL, é um pouco atrás. O OpenGL foi desenvolvido de acordo com as severas restrições do hardware gráfico. O resultado é que há restrições significativas de construção que podem ser ignoradas voluntariamente ao renderizar em software. Além disso, o algoritmo raster não é muito eficiente ao usar o hardware atual. Um traçado de raios de primeira ordem pode ser mais eficiente e paralisa facilmente vários núcleos. Talvez você possa procurar algo como o PovRay .
fonte
Parece que apenas o OpenGL 2.x é totalmente suportado pelo renderizador de software no Mesa.
No entanto, esta resposta sugere que a maioria das funcionalidades do OpenGL 3.x é suportada por extensões. Então, você pode tentar.
fonte