Pergunta

Tenho usado extensões OpenGL no Windows maneira dolorosa.O GLEW é o caminho mais fácil?Como faço para começar?

Foi útil?

Solução

Sim o Biblioteca Wrangler de extensão OpenGL (GLEW) é uma maneira fácil de usar extensões OpenGL no Windows.Veja como começar:

Identifique a extensão OpenGL e as APIs de extensão que você deseja usar.As extensões OpenGL estão listadas no Registro de extensão OpenGL.

Verifique se a sua placa gráfica suporta as extensões que você deseja usar.Baixe e instale os drivers e SDKs mais recentes para sua placa gráfica.

Versões recentes de SDK OpenGL da NVIDIA enviar com GLEW.Se estiver usando isso, não será necessário executar algumas das etapas a seguir.

Download GLEW e descompacte-o.

Adicione o GLEW caixa caminho para o seu Windows CAMINHO variável de ambiente.Alternativamente, você também pode colocar o glew32.dll em um diretório onde o Windows coleta suas DLLs.

Adicione o GLEW incluir caminho para a lista de diretórios de inclusão do seu compilador.

Adicione o GLEW biblioteca caminho para a lista de diretórios da biblioteca do seu compilador.

Instrua seu compilador a usar glew32.lib durante a vinculação.Se você estiver usando compiladores Visual C++, uma maneira de fazer isso é adicionando a seguinte linha ao seu código:

#pragma comment(lib, "glew32.lib")

Adicione um #include <GL/glew.h> linha para o seu código.Certifique-se de que isso seja colocado acima das inclusões de outros arquivos de cabeçalho GL.(Na verdade, você pode não precisar da inclusão dos arquivos de cabeçalho GL se incluir glew.h.)

Inicialize o GLEW usando glewInit() depois de inicializar o GLUT ou GL.Se falhar, algo está errado com sua configuração.

if (GLEW_OK != glewInit())
{
    // GLEW failed!
    exit(1);
}

Verifique se as extensões que você deseja usar já estão disponíveis no GLEW.Você faz isso verificando uma variável booleana chamada GLEW_nome_da_sua_extensão que é exposto pelo GLEW.

Exemplo:

if (!GLEW_EXT_framebuffer_object)
{
    exit(1);
}

É isso!Agora você pode usar as chamadas de extensão OpenGL em seu código como se elas existissem naturalmente no Windows.

Outras dicas

Pessoalmente, eu não usaria um comando de saída.

Eu lançaria uma exceção para que você pudesse limpar qualquer outra inicialização no final da função.

ou seja:

try
{
    // init opengl/directx
    // init directaudio
    // init directinput

    if (GLEW_OK != glewInit())
    {
        throw std::exception("glewInit failed");
    }
}
catch ( const std::exception& ex )
{
    // message to screen using ex.what()
    // clear up
}

E eu concordo com OJ - se você quiser escrever tutoriais para outras pessoas, então este é realmente o lugar errado para isso.Já existem vários bons lugares para tutoriais de opengl. Experimente este, por exemplo.

Perdi algum tempo, mas finalmente consegui fazer o GLEW funcionar.Estou usando Windows7 (x64), Eclipse CDT e MinGW, e o jeito é esse:

Baixe o MSYS (para MinGW) e lembre-se de ter o MinGW instalado corretamente (variável de ambiente PATH definida corretamente):http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.10/MSYS-1.0.10.exe/download?use_mirror=freefr&download=

Depois que o MSYS estiver instalado, vá para:http://glew.sourceforge.net/e baixe o pacote TGZ, que se destina ao uso com sistemas UNIX

Em seguida, abra o pacote (você também pode usar o 7zip) e encontre o "Makefile".Abra-o e com um editor de texto (o Bloco de Notas deve funcionar bem) encontre a linha que contém "GLEW_DEST" e substitua-a por algo como "GLEW_DEST ?= C:/MinGW"

Agora você está pronto, abra o MSYS (C:\MinGW\msys\1.0\msys.bat no meu caso) e no shell aberto, vá até a pasta onde está o "Makefile".

Então escreva um simples:"make install" e o trabalho está feito (pelo menos para mim funcionou)

PS:Também copiei os arquivos glew-1.10.0-win32\glew-1.10.0\bin elease\Win32 em minha pasta System32 e, no Eclipse CDT, adicionei a biblioteca "glew32" na opção do vinculador e adicionei um #include <GL/glew.h> antes #include <GL/glut.h>

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top