Pergunta

Desde que eu comecei a aprender sobre processamento para uma textura comecei a entender que glCopyTexSubImage2D() irá copiar a parte designada da tela de cabeça para baixo. Eu tentei um par de coisas simples que me veio à mente a fim de evitar / contornar isso, mas não conseguiu encontrar uma solução elegante.

  • existem dois problemas com fazendo um :: glScalef (1.0f, -1.0f, 1.0f) antes de processar a textura para a tela: 1, eu tenho que fazer isso toda vez que eu estou usando a textura. 2, eu estou trabalhando principalmente com gráficos 2D e ter backface abate desligado por GL_BACKsides. Tanto quanto possível, eu gostaria de salvar mudar esta ligado e desligado.

  • tentou mudar o modo de matriz para GL_TEXTURE e fazer a :: glScalef (1.0f, -1.0f, 1.0f) transformação na captura, mas os resultados foram os mesmos. (Eu estou supondo que a matriz de textura só tem um efeito sobre as chamadas glTexCoord?)

Então, como posso corrigir o up-down direções de texturas capturadas com glCopyTexSubImage2D?

Foi útil?

Solução

O que você vai estar usando as imagens de textura para? Na verdade, tentando torná-los de cabeça para baixo normalmente levaria mais trabalho do que se deslocam que o código em outro lugar.

Se você está tentando usar a imagem sem exportar, basta folhear as coordenadas de textura onde quer que você está usando o resultado seria a maneira mais eficiente.

Se você está tentando exportar lo, então você quer quer lançá-los-se, depois de renderização.

Em uma nota relacionada, se você estiver fazendo um jogo 2D, por isso é backface abate ligado?

Outras dicas

Se o meu entendimento é correto, isso depende de onde sua origem é. Essa função parece assumir a sua origem está na, enquanto a maioria das coisas 2D assume uma origem de canto superior esquerdo, que é por isso que parece de cabeça para baixo.

inferior esquerdo

Eu suponho que você poderia mudar a origem até o canto inferior esquerdo, fazer a captura, em seguida, mudar a parte traseira origem ao canto superior esquerdo e tornar novamente antes de fazer a troca. Mas isso é uma solução horrível desde que você está tornando efectivamente duas vezes, mas pode ser bom se você não pretende fazê-lo cada quadro.

Use glReadPixels () para copiar para um buffer, inverter a imagem, o uso, em seguida, glTexImage2D () para escrevê-lo de volta.

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