2017-01-08 52 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功能。