Eu tenho uma nuvem de pontos que está sendo renderizada na tela. Cada ponto tem sua posição e cor, além de um ID.
Me pediram para renderizar os IDs de cada ponto em uma textura, então criei um FBO e anexei duas texturas, uma para cores e outra para profundidade. Criei o VAO e o VBO necessários para essa renderização fora da tela e carreguei para cada ponto sua posição e ID.
Depois que a renderização para o FBO é concluída, leio os pixels da textura de cor glReadPixels()
para ver quais são os valores, mas eles parecem todos limpos, ou seja, o valor que eles têm é o mesmo que glClearColor()
.
Existe uma maneira de depurar o que está sendo renderizado na textura de cores do meu FBO? Todas as dicas que você pode fornecer são muito bem-vindas.
Testei vários aplicativos / APIs / bibliotecas para obter dados de FBOs em aplicativos que usam o gbuffer, por exemplo. Após meses de sofrimento, descobri o apitrace disponível no Github para depurar o OpenGL, Direct3D e WebGL. Eu usei no Windows e Linux sem problemas.
Espero que possa ser útil para você.
fonte
Além da resposta do cifz, outra maneira de visualizar FBOs que não custam muito código é usar glBlitFramebuffer () para transferir pixels de um framebuffer para uma janela.
Existem algumas "dicas" óbvias, em que os buffers HDR provavelmente não visualizarão da maneira que você espera, provavelmente não poderá "ver" os buffers de profundidade / estêncil da maneira óbvia, e se o tamanho do FBO não Se não coincidir com a área que está sendo cortada, o método de ampliação / redução pode ser extremamente ingênuo.
Mas como hacks rápidos e sujos, é muito bom.
fonte