Ir ao conteúdo

Posts recomendados

Postado

Pensando em velocidade,  como posso recriar a função TransparentBlt()?

Gostava de entender como esta função funciona e como pode ser rápida na execução.  Será que usa DIB's ou é mesmo Assembler?

  • Curtir 1
Postado

A função TransparentBlt() é uma função da biblioteca Windows GDI (Graphics Device Interface) que permite copiar uma imagem de origem para uma imagem de destino com transparência. A transparência é determinada por uma máscara de cor especificada pelo desenvolvedor.

Para replicar a funcionalidade da função TransparentBlt() de forma rápida, é possível usar um conjunto de técnicas e tecnologias, como o uso de Direct2D ou o uso de bibliotecas gráficas de terceiros.

No entanto, para entender como a função TransparentBlt() funciona internamente, é importante saber que a função é implementada internamente pelo Windows usando a API BitBlt() e uma combinação de DIBs (Device Independent Bitmaps) e algoritmos de transparência. A API BitBlt() é usada para realizar uma operação de transferência de bitmap de uma região da memória para outra, e os DIBs são usados para fornecer um formato de imagem independente do dispositivo.

Para obter desempenho aprimorado, a função TransparentBlt() usa otimizações específicas da plataforma, como código otimizado em Assembly, suporte a hardware gráfico acelerado e outras técnicas de otimização de desempenho.

Assim, para recriar a função TransparentBlt() de forma rápida, é importante entender como as operações gráficas funcionam em um nível mais baixo e como é possível aproveitar as tecnologias e técnicas modernas para otimizar o desempenho da função.

  • Curtir 1
  • Amei 1
Postado

ou seja: para obter rapidez gráfica ou uso Assembler ou Directx.. a funcionalidade DIB's é rápida mas limitada... e pode ser má para jogos 2D/3D simples(Wolf3d ou mesmo Duke 1)... certo?

  • Curtir 1
Postado

Embora a função TransparentBlt() possa ser útil para copiar imagens com transparência, ela pode não ser a melhor escolha para jogos 2D/3D simples, como Wolf3d ou Duke 1. Isso ocorre porque a função foi projetada para ser usada em conjunto com a API GDI, que é otimizada para desenho de gráficos em janelas e não é tão eficiente quanto as bibliotecas de gráficos mais modernas, como o Directx.

Além disso, o uso de DIBs (Device-Independent Bitmaps) pode ser rápido, mas pode ter limitações em relação às capacidades de renderização de gráficos mais modernas. Essas limitações podem incluir a falta de suporte para recursos como aceleração de hardware e efeitos gráficos avançados.

Portanto, para jogos 2D/3D simples, é recomendável usar bibliotecas gráficas mais modernas, como o Directx, que são otimizadas para jogos e oferecem suporte para recursos avançados de renderização de gráficos.

  • Curtir 1
  • Amei 1
Postado

Bit blitting é obsoleto com o hardware que temos hoje em dia. A maneira mais eficiente ate mesmo para simples jogos 2D é criar geometria de triângulos, fazer o mapeamento das texturas e enviar diretamente para a placa de vídeo. Vale lembrar que placas de vídeo são projetadas para manipular quantidades absurdas de polígonos portanto enviar diretamente os bitmaps para a memória é desperdiçar processamento.

 

A SFML por exemplo  tem ferramentas para criar essa geometria de triângulos.

https://www.sfml-dev.org/tutorials/2.5/graphics-vertex-array.php

 

Pode ser uma boa começar por ai.

  • Obrigado 1
  • Amei 1
Postado

@Cambalinho   a SFML é uma biblioteca  externa  que precisa ser instalada  e configurada para ser usada junto com algum IDE ,  codeblocks  visual studio ,  ou outros  ,  e além dessa tem outras  como a Allegro ,  SDL ,  QT ,  todas são parecidas com a API do windows ,  porém com mais recursos .

  • Amei 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...