Laboratório de Aplicações com Interface Gráfica

Esta página está em construção. Enquanto não atinge a sua versão final, irão sendo aqui colocadas algumas perguntas mais frequentes e respectivas respostas relativamente a OpenGL e ao desenvolvimento dos trabalhos. Possíveis contribuições podem ser enviadas por e-mail para o autor.

FAQ's

Texturas

As texturas não aparecem, ou aparecem distorcidas, quando uso RGBPixmap

  • Verificar:
    • Se estão colocadas na directoria usada na execução (em VS por omissão a mesma onde está o ficheiro do projecto)
    • Se as suas dimensões são múltiplos de quatro (é uma limitação do RGBPixmap que causa distorção)
    • Se as suas dimensões não são demasiado grandes (texturas maiores que 512×512 são exageradas para o tipo de projectos em causa, e em algumas configurações podem não ser bem suportadas)

Como controlo a aplicação de texturas nas quádricas?

* As quádricas geram as suas próprias coordenadas de textura, quando esse modo é activado utilizando glQuadricTexture(). No entanto, não podem ser alteradas. Para mapear texturas de forma controlada, a solução é gerar a própria geometria usando primitivas do OpenGL, e especificar as coordenadas de textura. Alternativamente, podem manipular as coordenadas de textura aplicando transformações à matriz de transformações de texturas (mais informação aqui)

Efeitos especiais

Como implementar transparências?

Específico Visual Studio

Tenho erros de compilação que referem um "libcmtd.lib" (ou semelhante). O que faço?

  • Em alguns casos, o tipo de projecto criado inclui por omissão bibliotecas que depois entram em conflito com outras incluidas posteriormente.
  • Solução: configurar o projecto para ignorar as bibliotecas por omissão que dão origem a esses conflitos (a “libcmtd.lib” é uma delas). Isso é feito em “Project”→“Properties”→“Linker”→“Input”→“Ignore specific library”.

Tenho erros que referem "Unresolved external symbol". O que é que isso quer dizer?

  • Estão a ser referidas funções no código que pertencem a uma biblioteca que não está a ser incluída ao fazer o “linking” do projecto. Por exemplo, usar funções da GLUI sem incluir o glui32.lib no projecto.
  • Solução: tentar identificar pelo nome das funções que aparecem nos erros qual é a biblioteca em falta, e adicioná-la em “Project”→“Properties”→“Linker”→“Input”→“Additional dependencies”

Tenho um erro relacionado com o "Manifest file" que não me permite executar o programa

  • Este erro normalmente ocorre quando se tentam usar bibliotecas compiladas numa versão do Visual Studio diferente da que está a ser usada para compilar o nosso projeto. Por exemplo, utilizando versões do TinyXML compiladas em VS 2008, num projeto em VS 2010.
  • Uma solução comum, embora não ideal, é desactivar a geração do manifest ( Propriedades do projecto → Linker → Manifest File → Generate Manifest → “No” seguido de Apply).
  • Outra solução é usar uma versão da biblioteca compilada na mesma versão (no caso do TinyXMl está disponível no Moodle de LAIG uma versão para VS 2010).
  • Uma terceira solução é recompilar a biblioteca na mesma versão do Visual Studio, se for possível.