glewInit() Fehlgeschlagen, OpenGL-App
Ich versuche zu bauen, ein OpenGL-App mit glew/glfw. Ich habe heruntergeladen die Binärdateien befinden sich im root von "my folder"), Hinzugefügt werden die Pfade zu den include-und lib-Verzeichnisse und sagte zu meinem Projekt zu verlangen glew32.lib, GLFW.lib und opengl32.lib.
Habe ich sogar kopiert glew32.lib im root-Verzeichnis, da mein Projekt nicht sehen konnten.
Muss ich halten, alle Abhängigkeiten im Projekt-Verzeichnis, da werde ich verteilen. Ich bin an einem Verlust.
Wenn ich jetzt aus meinem Programm, es schlägt fehl, glewInit()
Dies ist meine Implementierung so weit:
#include "Common.h"
GameEngine::GameEngine()
{
InitWithSize(1024, 768);
InitInput();
}
void GameEngine::InitWithSize(int _width, int _height)
{
try {
//Initialise GLFW
if( !glfwInit() )
throw std::exception("Failed to initialize GLFW\n");
//glfwOpenWindowHint(GLFW_FSAA_SAMPLES, 4);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//Open a window and create its OpenGL context
if( !glfwOpenWindow( _width, _height, 0,0,0,0, 32,0, GLFW_WINDOW ) )
throw std::exception("Failed to initialize GLFW\n");
glfwSetWindowTitle( "Tutorial 01" );
//Initialize GLEW
if (glewInit() != GLEW_OK)
throw std::exception("Failed to initialize GLEW\n");
} catch ( std::system_error const& err) {
fprintf(stdout, "System Error: %s", err.what());
glfwTerminate(); //Free glfw if it has been allocated
//Try Again
this->InitWithSize(_width, _height);
} catch( std::exception const& err) {
fprintf(stdout, "Exception Found: %s", err.what());
} catch ( ... ) {
fprintf(stdout,"Unknown Exception Occurred\n");
}
}
void GameEngine::InitInput()
{
//Ensure we can capture the escape key being pressed below
glfwEnable( GLFW_STICKY_KEYS );
}
void GameEngine::StartGameLoop()
{
do{
//Draw nothing, see you in tutorial 2 !
//Swap buffers
glfwSwapBuffers();
} //Check if the ESC key was pressed or the window was closed
while( glfwGetKey( GLFW_KEY_ESC ) != GLFW_PRESS &&
glfwGetWindowParam( GLFW_OPENED ) );
}
void GameEngine::InitTestData()
{
//An array of 3 vectors which represents 3 vertices
static const GLfloat g_vertex_buffer_data[] = {
-1.0f, -1.0f, 0.0f,
1.0f, -1.0f, 0.0f,
0.0f, 1.0f, 0.0f,
};
}
Mit meinem Common-Header:
#ifndef _COMMON_H
#define _COMMON_H
//OpenGL Libraries
#define GLEW_STATIC
//#pragma comment(lib, "glew32.lib")
#include <GL\glew.h>
#include <GL\glfw.h>
//Core Libraries
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <map>
#include <string>
#include <fstream>
//C++ 11 Libraries
#include <memory>
#include <exception>
#include <thread>
#include <chrono>
//Manager Classes
#include "ThreadManager.h"
#include "GameEngine.h"
#include "ShaderManager.h"
//Lesser Classes
#include "Shader.h"
#endif
Vielleicht setzen Sie Ihren code? Ich sehe keine echten Fehler im log, nur eine Meldung, dass das Programm beendet. Sie können ignorieren Sie alle PDB-Symbole Linien.
glewInit()
eigentlich einen Fehlercode zurückgibt, die Sie verwenden können, mit glewGetErrorString
. Siehe glew.sourceforge.net/basic.htmlInformationsquelleAutor Josh Elias | 2012-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß, diese Antwort kommt ein bisschen spät, aber ich sehe nicht, machen Sie den OpenGL-Kontext Strom durch den Aufruf
glfwMakeContextCurrent(window)
. Sie haben zu tun, dass vor dem AufrufglewInit()
InformationsquelleAutor Max
Wenn kein Fehler wird zurückgegeben von glewInit() gibt 0 zurück. Für einige Grund der Rückkehr war nicht zu vergleichen auch zu GLEW_OK aber wenn der Wert alles andere als 0, gibt es einen Fehler.
InformationsquelleAutor Josh Elias
Sind Sie mit Core OpenGL-version 3.3, so müssen Sie Sie mit "neu" und von GLEW Begriffe "experimentell" - API. Fügen Sie diese Zeile vor dem Aufruf glewInit();
Hier ist eine komplette init-code aus meinem Motor .Es ist für 4.2, aber sollte das gleiche für Sie:
InformationsquelleAutor Michael IV
Ich hatte ein ähnliches problem und habe endlich die Lösung auf opengl.org.
Es scheint, dass GLEW Entwickler noch nicht behoben, die einen core-Kontext-problem noch.
Obwohl es eine ganz einfache Lösung:
HTH
InformationsquelleAutor Berniiiii