Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
.
Aqui está o vídeo que eu prometi publicar. A qualidade da imagem é ruim, mas não impede que você veja os atrasos na resposta.
Na verdade, há menos atrasos no terminal. Quando o gravador está ligado, tudo é duas vezes mais lento. O processador carrega muito mais, também.
Portanto, não é possível ter uma idéia completamente objetiva da velocidade de reação deste vídeo, mas ele mostra claramente um padrão entre a taxa de atualização da janela e o tamanho da janela.
(É por isso que eu fiz várias janelas de diferentes tamanhos).
Acho que tenho a razão exata para a desaceleração da resposta da imagem. É a chamada constante da função ColorToARGB(). Em cada evento e em cada pixel eu chamo esta função. Em vez de calcular as cores uma vez e usá-las prontas, eu as recalculo o tempo todo.
Acho que este é o ponto.
P.S. Eu esqueci de acrescentar que o número total de objetos de todas as janelas é 35.
.
Aqui está o vídeo que eu prometi publicar. A qualidade da imagem é ruim, mas não impede que você veja os atrasos na resposta.
Na verdade, há menos atrasos no terminal. Quando o gravador está ligado, tudo é duas vezes mais lento. O processador carrega muito mais, também.
Portanto, não é possível ter uma idéia completamente objetiva da velocidade de reação deste vídeo, mas posso ver claramente um padrão entre a taxa de atualização da janela e o tamanho da janela.
(É por isso que eu fiz várias janelas de diferentes tamanhos).
Acho que tenho a razão exata para a desaceleração da resposta da imagem. É a chamada constante da função ColorToARGB(). Em cada evento e em cada pixel eu chamo esta função. Em vez de calcular as cores uma vez e usá-las prontas, eu as recalculo o tempo todo.
Acho que essa é a questão.
P.S. Eu esqueci de acrescentar que o número total de objetos de todas as janelas é 35.
É possível dar uma olhada no código fonte? Para mim, pela minha experiência.
É realista acelerar a renderização em Tela com OpenCL?
Sim. OCL tem a capacidade de paralelizar o processamento + a capacidade de operar em vetores - isto acelera o processo de renderização/sobreposição.
Leia mais sobre o uso de vetores no artigo do Mathemat https://www.mql5.com/ru/articles/407
Sim. A OCL tem a possibilidade de paralelizar o processamento + possibilidade de operar com vetores - isto acelera o processo de desenho/layering.
Leia mais sobre o uso de vetores no artigo do Mathemat https://www.mql5.com/ru/articles/407
Você comparou a velocidade de Erase() do CCanvas e o loop PixelSet() feito no OpenCl? Em teoria, com uma boa velocidade, você pode fazer código de desenho burro sem caching de resultados intermediários e outras complicações.
A propósito, você mistura camadas usando esta fórmula?
Sim, a fórmula é da wikipedia, para cada componente de cor: Resultado = Fundo + (Primeiro plano - Fundo) * Alfa;
A propósito, há um problema com o Erase no OCL. Não existe um análogo de memset (ao contrário da CUDA). É por isso que agora tenho que apagar no host e copiar a matriz limpa através do CLBufferWrite, que certamente não é mais rápido do que o simples apagar.
Por outro lado, tentei fazer uma matriz de tarefas para unidades de trabalho escrevendo 1 ponto na matriz, mas não me lembro da velocidade - parecia ser mais lenta do que o método anterior.
E no OCL 1.2 háclEnqueueFillBuffer() que faz isso => de acordo com a sintaxe MQL deve haver CLBufferFill()
Mas este invólucro não é implementado (já que a versão 1.1 é portada).
Sim, a fórmula é da wikipedia, para cada componente de cor: Resultado = Fundo + (Primeiro plano - Fundo) * Alfa;
A propósito, há um problema com o Erase no OCL. Não existe um análogo de memset (ao contrário da CUDA). É por isso que agora tenho que apagar no host e copiar o conjunto limpo através do CLBufferWrite, que certamente não é mais rápido do que o simples apagar.
Por outro lado, tentei fazer uma matriz de tarefas para unidades de trabalho escrevendo 1 ponto na matriz, mas não me lembro da velocidade - parecia ser mais lenta do que o método anterior.
E no OCL 1.2 háclEnqueueFillBuffer() que faz isso => de acordo com a sintaxe MQL deve haver CLBufferFill()
Mas este invólucro não é implementado (já que a versão 1.1 é portada).
Na vítima inglesa, a fórmula é mais interessante, você pode misturar duas camadas translúcidas. É possível fazer uma interface translúcida e outras coisas bonitas.
Eu não precisava disto no meu caso, tudo se mistura corretamente. Qualquer coisa abaixo da camada A pode ser considerada o substrato, mesmo que a camada B esteja em cima dele, através da qual o próprio substrato brilha.