Ich versuche eine OpenGL App mit glew/glfw zu erstellen. Ich habe die Binärdateien heruntergeladen, sie in den Stamm meines Ordners gestellt, die Pfade zu den include- und lib-Verzeichnissen hinzugefügt und meinem Projekt gesagt, dass es glew32.lib, GLFW.lib und opengl32.lib benötigt.glewInit() fehlgeschlagen, OpenGL App
Ich habe sogar glew32.lib in das Stammverzeichnis kopiert, weil mein Projekt es nicht sehen konnte.
Ich muss alle Abhängigkeiten im Projektverzeichnis behalten, da ich das verteilen werde. Ich bin ratlos.
Nun, wenn ich mein Programm ausführen, schlägt es bei glewInit()
Das ist meine Umsetzung so weit ist:
#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 gemeinsamen Rubrik:
#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 in diesem Protokoll, nur eine Benachrichtigung, dass das Programm fertig ausgeführt wurde. Sie können alle PDB-Symbolzeilen ignorieren. – Tim
'glewInit()' gibt tatsächlich einen Fehlercode zurück, den Sie mit 'glewGetErrorString' verwenden können. Siehe http://glew.sourceforge.net/basic.html – Grimmy