2017-01-08 55 views
0

我下面OpenGL的教程 「進行遊戲隨着BENS」(https://www.youtube.com/user/makinggameswithben),我得到這個GLEW缺少GL版C++使用SDL2 2.0.5和2.0.0 GLEW

缺少GL版本

每次我嘗試初始化glew時。
我重新安裝了多條SDL和SDL2。
我不明白我在做什麼錯。

我使用GLEW 2.0.0和2.0.5 SDL2

headerfile:

#pragma once 

#include <string> 
#include <vector> 

//Graphics 
#include <SDL2\SDL.h> 
#include <GL\glew.h> 
class Display 
{ 
public://functions: 
    Display(int m_width, int m_heigth, const char title []); 
    void update(); 
    ~Display(); 
private: 

public://variables: 
    std::vector<char> error; 
    int width; 
    int heigth; 
private: 
    //Window pointer 
    SDL_Window * m_window; 


}; 

.cpp文件:

#include "Display.h"  

Display::Display(int m_width, int m_heigth, const char title[]) 
{ 
    m_window = nullptr; 
    width = m_width; 
    heigth = m_heigth; 
    //Initialize SDL 
    SDL_Init(SDL_INIT_EVERYTHING); 

    m_window = SDL_CreateWindow(title, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, m_width, m_heigth, SDL_WINDOW_OPENGL); 
    //error 1: 
    if (m_window = nullptr) { 
     error.push_back(255); 
    } 
    //error 2: 
    SDL_GLContext glContext = SDL_GL_CreateContext(m_window); 
    if (glContext = nullptr) { 
     error.push_back(254); 
    } 

    const GLenum GLerror = glewInit(); 
    //error 3: 
    if (GLerror != GLEW_OK) { 
     error.push_back(GLerror); 
    } 

    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); 

    glClearColor(0.0f, 0.0f, 1.0f, 1.0f); 
} 

void Display::update() 
{ 
    glClearDepth(1.0); 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    SDL_GL_SwapWindow(m_window); 
} 

Display::~Display() 
{ 
    delete m_window; 
    SDL_Quit(); 
} 
+1

也許如果你分享你如何編譯程序可能有助於找出問題出在哪裏。 – fedepad

回答

0

你可能需要做的:

glewExperimental = GL_TRUE; 

之前

glewInit(); 

這將允許GLEW使用OpenGL版本2.0以上的OpenGL功能。