GL3W导致纹理加载错误

时间:2011-11-10 22:56:21

标签: c++ opengl sdl textures

当我使用GL3W时,我无法加载纹理。它们显得空白或混乱。

我想在SDL 1.3中使用OpenGL 4.2上下文,所以我决定使用GL3W,因为GLEW使用了弃用的函数。一切似乎工作正常,但是,当我尝试加载纹理时,它要么搞砸了(随机彩色线条),要么只是空白(黑色没有alpha,透明)。到目前为止我尝试的其他所有功能都有效(着色器,VAO,VBO等)

我写了一个我能想出的最简单的例子来说明:

#include <SDL.h>
#include <SDL_image.h>
#include <GL3/gl3w.h>
#include <gl/gl.h>
#include <gl/glu.h>

int main(int argc, char* argv[]) {
    SDL_Init(SDL_INIT_EVERYTHING);
    SDL_WindowID mainWindow = SDL_CreateWindow("Test", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
    SDL_GLContext mainContext = SDL_GL_CreateContext(mainWindow);
    SDL_GL_MakeCurrent(mainWindow, mainContext);

    gl3wInit();

    GLuint id;
    glGenTextures(1, &id);
    glBindTexture(GL_TEXTURE_2D, id);
    SDL_Surface* test2 = IMG_Load("test.png");
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, test2->w, test2->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, test2->pixels);
    // Loop to keep the window open while debugging in gDEBugger
    while (1) {
            SDL_GL_SwapWindow(mainWindow);
    }
    return 0;
}

我不知道它有多相关,但由于gl3w是由python脚本生成的,我将包含它(外部链接因为长度):

如果我删除#include <GL3/gl3w.h>glewInit();纹理已成功加载。

0 个答案:

没有答案