Emulando gráficos baseados em paleta em WebGL v.s. Canvas 2D

Atualmente, estou usando o contexto de tela 2D para desenhar uma imagem gerada (de pixel para pixel, mas atualizada como um buffer inteiro em uma vez após um quadro gerado) do JavaScript a uma taxa de 25fps. A imagem gerada é sempre um byte (inteiro / tipificado) por pixel e uma paleta fixa é usada para gerar o resultado final RGB. O escalonamento também é necessário para adotar o tamanho da tela (ou seja: ir para a tela cheia) e / ou a pedido do usuário (botões de zoom in / out).

O contexto 2D da tela está OK para essa finalidade, no entanto, estou curioso para saber se o WebGL pode fornecer melhor resultado e / ou melhor desempenho. Por favor, note: eu não quero colocar pixels via webGL, eu quero colocar pixels no meu buffer (que é basicamente Uint8Array), e usar esse buffer (em uma vez) para atualizar o contexto. Eu não sei muito sobre WebGL, mas usando a imagem gerada necessária como algum tipo de textura funcionaria de alguma forma, por exemplo? Então eu precisaria atualizar a textura em cerca de 25fps, eu acho.

Seria realmente fantástico se o WebGL suportasse a conversão do espaço de cores de alguma forma. Com o contexto 2D, preciso converter 1 buffer de byte / pixel em RGBA para os dados de imagem em JavaScript para cada pixel ... O dimensionamento (para contexto 2D) é feito agora alterando o estilo de altura / largura da tela, para que os navegadores dimensionem imagem então. No entanto, eu acho que pode ser mais lento do que o WebGL pode fazer com o suporte hw, e também (espero) WebGL pode dar maior flexibilidade para controlar o dimensionamento, por exemplo, com o contexto 2D, navegadores farão antialiasing mesmo se eu não quiser fazer (por exemplo: fator de zoom inteiro), e talvez essa seja uma razão que pode ser bastante lenta às vezes.

Eu já tentei aprender vários tutoriais WebGL mas todos eles começam com objetos, formas, cubos 3D, etc, eu não preciso de nenhum objeto - clássico - para renderizar apenas o que o contexto 2D pode fazer - na esperança de que O WebGL pode ser uma solução mais rápida para a mesma tarefa! É claro que se não houver nenhuma vitória aqui com o WebGL, eu continuaria usando o contexto 2D.

Para ser claro: isso é algum tipo de emulador de hardware de computador feito em JavaScript, e sua saída (o que seria visto em uma TV PAL conectada a ele) é renderizada através de um contexto de tela. A máquina tem paleta fixa com 256 elementos, internamente só precisa de um byte para um pixel definir sua cor.

questionAnswers(2)

yourAnswerToTheQuestion