Sto provando a creare un'app OpenGL con glew/glfw. Ho scaricato i file binari, li ho inseriti nella radice della mia cartella, aggiunto i percorsi alle directory di inclusione e lib e ho detto al mio progetto di richiedere glew32.lib, GLFW.lib e opengl32.lib.glewInit() non riuscito, OpenGL App
Ho persino copiato glew32.lib nella directory radice perché il mio progetto non poteva vederlo.
Devo mantenere tutte le dipendenze nella directory del progetto poiché lo distribuirò. Sono in perdita.
Ora, quando eseguo il mio programma, non riesce a glewInit()
Questa è la mia implementazione finora:
#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,
};
}
Con la mia intestazione Comune:
#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
Forse hai messo il tuo codice? Non vedo errori reali in quel registro, solo una notifica che il programma ha terminato l'esecuzione. È possibile ignorare tutte le linee dei simboli PDB. – Tim
'glewInit()' restituisce effettivamente un codice di errore che è possibile utilizzare con 'glewGetErrorString'. Vedi http://glew.sourceforge.net/basic.html – Grimmy