SDL (biblioteca)

Origem: Wikipédia, a enciclopédia livre.
Simple DirectMedia Layer

Logo do SDL
Desenvolvedor Sam Lantinga
Lançamento 1998 (25–26 anos)
Versão estável 2.0.22[1] (25 de abril de 2022; há 23 meses)
Escrito em C
Sistema operacional Windows, MacOS, Linux, iOS, Android
Gênero(s) API
Licença zlib
Estado do desenvolvimento Ativo
Página oficial www.libsdl.org
Repositório github.com/libsdl-org/SDL
Simple DirectMedia Layer

Simple DirectMedia Layer (SDL) é uma biblioteca multimídia livre e de código aberto, multiplataforma, escrito em C que representa uma interface simples para gráficos, som e dispositivos de entrada de várias plataformas.

SDL tem a palavra "layer" (camada) no título porque é na verdade um wrapper de várias funções específicas do sistema operacional. O propósito principal do SDL é fornecer um framework comum para acessar essas funções. Para maior funcionalidade além desse objetivo, várias bibliotecas foram criadas para funcionar em conjunto com SDL.[2]

Desenvolvedores de software usam-no para escrever jogos de computador e outras aplicações multimídia que funcionem em vários sistemas operacionais: Android, iOS, Linux, Mac OS X, Windows e outras plataformas não-suportadas oficialmente.[3] A biblioteca manipula vídeo, eventos, áudio digital, CD-ROM, threads, carregamento de objetos compartilhados, rede e timers (temporizadores).[4]

Galeria[editar | editar código-fonte]

Design[editar | editar código-fonte]

SDL age como um wrapper de camada fina e multiplataforma, fornecendo suporte a operações de pixel 2D, som, acesso à arquivos, manipulação de eventos, temporizadores, threading, e mais. É frequentemente usado para complementar o OpenGL estabelecendo saída gráfica e fornecendo entrada de mouse e teclado, que vão além do escopo do OpenGL.

A biblioteca é dividida em vários subsistemas, a saber, vídeo (controla ambas as funções de superfície e OpenGL), áudio, CD-ROM, joysticks, e subsistemas de timer. Além desse suporte básico de mais baixo nível, também há algumas bibliotecas oficiais separadas que fornecem mais funções. Essas compreendem a "biblioteca padrão", e são disponibilizadas no site oficial e incluídas na documentação oficial:

  • SDL_image — suporte para vários formatos de imagem
  • SDL_mixer — funções de áudio complexas, principalmente para mixagem de som
  • SDL_net — suporte a networking (rede)
  • SDL_ttf — suporte a renderização de fontes TrueType
  • SDL_rtf — renderização de textos em RTF simples

Existem também outras bibliotecas não-oficiais. Por exemplo: SDL_Collide no Sourceforge criada por Amir Taaki.

A biblioteca SDL possui bindings de linguagem para muitas linguagens de programação, das populares (C, C++, Pascal, Perl, Python (via Pygame), etc.) até as menos conhecidas como Ch (via ChSDL), Euphoria e Pliant. Isso torna SDL uma biblioteca de código aberto comumente utilizada para muitas aplicações multimídia.

História[editar | editar código-fonte]

Sam Lantinga criou a biblioteca, inicialmente lançando-a no começo de 1998, enquanto trabalhava na Loki Software. Ele teve a idéia enquanto portava uma aplicação do Windows para o Macintosh. Então usou a SDL para portar o Doom para o BeOS. Muitas outras bibliotecas livres apareceram para trabalhar com a SDL, como a SMPEG e a OpenAL. Ele também fundou a Galaxy Gameworks em 2008 para apoiar comercialmente o SDL, embora os planos da companhia estejam em espera devido a restrições de tempo.[5]

SDL 2.0 é uma grande atualização ao código-base com uma API diferente, sem retrocompatibilidade.[6] Ela substitui várias partes da API 2.3 com maior suporte genérico para múltiplas opções de entrada e saída.

Algumas adições funcionais incluem suporte a múltiplas janelas, gráficos 2D acelerados por hardware, e melhor suporte a Unicode.[7]

SDL 2.0 possui licença zlib, e portanto é livremente disponível para linkagem estática em projetos comerciais de código fechado, ao contrário do SDL 1.2.[8] No mesmo dia que Sam Lantinga anunciou que estaria indo para a Valve Software, ele também anunciou que "era hora de disponibilizar o SDL 2.0 para as massas".[9]

Portas[editar | editar código-fonte]

Camadas de abstração de várias plataformas.

Devido ao modo como SDL foi projetado, muito do seu código fonte é dividido em módulos separados para cada sistema operacional, para fazer chamadas ao sistema subjacente. Quando SDL é compilado, os módulos corretos são selecionados para o sistema alvo.

No Microsoft Windows, SDL usa um backend GDI por padrão. Um backend em DirectX também está disponível. Versões antigas do SDL usavam DirectX 5, mas SDL 1.2 (a versão estável atual) requer DirectX 7 por padrão. Sam Lantinga mencionou que planeja usar DirectX 8 nas versões futuras do SDL.[10]

Nas plataformas X Window System, incluindo Linux e OpenVMS, SDL usa Xlib para se comunicar com o sistema X11 para gráficos e eventos.

No Mac OS X, SDL usa Quartz.

Sintaxe e subsistemas[editar | editar código-fonte]

A sintaxe de SDL é baseada em funções: todas as operações feitas em SDL são executadas passando parâmetros para funções. Estruturas especiais também são usadas para armazenar informações específicas que o SDL precisa controlar. Há alguns subsistemas diferentes sob os quais o SDL categoriza suas funções:

  • Subsistema de vídeo, eventos e threads: esse fornece funções de vídeo, multi-threading, e manipulação de eventos
  • Subsistema de áudio: fornece funções comuns de áudio
  • Subsistema de tempo
  • Subsistema de joystick
  • Subsistema de CD-ROM

Instalação[editar | editar código-fonte]

A SDL pode ser obtida no endereço www.libsdl.org. Há versões runtime (apenas para rodar aplicativos que dependem da SDL) e versões para desenvolvimento de aplicativos. Em alguns sistemas Linux como o Ubuntu, pode-se encontrar a biblioteca pré-compilada no gerenciador de pacotes nativo.

A versão 2.0, que ainda está sob testes, pode ser obtida pelo Mercurial e clonado diretamente para seu computador onde é possível usar os projetos prontos (como Visual Studio no Windows) para compilar as dlls e libs necessárias para o desenvolvimento; mais informações sobre isso podem ser encontradas nesse endereço: www.libsdl.org/hg.php.

Ver também[editar | editar código-fonte]

Referências

  1. [1]
  2. «SDL libraries». Libsdl.org. Consultado em 11 de março de 2020. Arquivado do original em 27 de julho de 2013 
  3. «a list of the platforms SDL supports». Libsdl.org. Consultado em 11 de março de 2020 [ligação inativa] 
  4. «SDL official website». Libsdl.org. Consultado em 19 de março de 2010 
  5. «Exploring the Galaxy». 6 de abril de 2011. Consultado em 11 de março de 2020 
  6. SDL 1.2 to 2.0 Migration Guide
  7. «SDL 2.0 Roadmap». Consultado em 11 de março de 2020 
  8. «Licensing the Simple DirectMedia Layer library». Consultado em 11 de março de 2020 
  9. «SDL 2.0 Is Coming Very Soon With New Features». Consultado em 11 de março de 2020 
  10. «SDL mailing list». Libsdl.org. 7 de dezembro de 2000. Consultado em 11 de março de 2020 

Ligações externas[editar | editar código-fonte]


Ícone de esboço Este artigo sobre software é um esboço. Você pode ajudar a Wikipédia expandindo-o.