glew Missing GL version c++ using SDL2 2.0.5 and glew 2.0.0

Posted

技术标签:

【中文标题】glew Missing GL version c++ using SDL2 2.0.5 and glew 2.0.0【英文标题】: 【发布时间】:2017-01-08 16:17:05 【问题描述】:

我正在学习 OpenGL 上的“使用 Bens 制作游戏”(https://www.youtube.com/user/makinggameswithben) 教程,我明白了

缺少 gl 版本

每次我尝试初始化 glew。 我已经多次重新安装了glew和SDL2。 我不明白我做错了什么。

我正在使用 glew 2.0.0 和 SDL2 2.0.5

头文件:

#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】:

您可能需要这样做:

glewExperimental = GL_TRUE;

就在之前

glewInit();

这将允许 GLEW 使用高于 OpenGL 版本 2.0 的 OpenGL 功能。

【讨论】:

以上是关于glew Missing GL version c++ using SDL2 2.0.5 and glew 2.0.0的主要内容,如果未能解决你的问题,请参考以下文章

使用 CMake 和 Visual Studio 2019 编译 GLEW?

glGetString(GL_VERSION) 在 OpenGL 初始化时返回 NULL

OpenGL:gl.h、glut 和 glew

GLEW _First 是 nullptr

win 10 安装 glew 方法

OSX Yosemite 10.10.3 上的 Cmake - GLEW:找不到包“gl”