Ir ao conteúdo
  • Cadastre-se

C++ GDI: como posso recriar o TransparentBlt()?


Cambalinho

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!