簡體   English   中英

SDL無法在2.1 Mac OSX Yosemite上加載OpenGL上下文

[英]SDL Can't load OpenGL Context over 2.1 Mac OSX Yosemite

我正在運行Mac OSX Yosemite版本10.10和最新版本的SDL(2.0.3)。

我試圖至少使用OpenGL版本3+。 沒有做任何事情,我的OpenGL版本返回2.1 INTEL-10.0.86

OpenGL命令可以工作,但這顯然不是我需要的版本。

因此,在做了一些研究后,我發現在初始化SDL之后但在定義上下文之前SDL_GL_SetAttribute(SDL_GLattr attr, int value)使用SDL更改版本的方法是通過SDL_GL_SetAttribute(SDL_GLattr attr, int value)函數。 所以這是我的代碼:

if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
{
    printf("Failed to initialize SDL. Error (SDL): %s.\n", SDL_GetError());
    return false;
}

SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); //I read somewhere that this may help

window = SDL_CreateWindow("Window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, (SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN));

if (!window)
{
    printf("Failed to create the window. Error (SDL): %s.\n", SDL_GetError());
    return false;
}

context = SDL_GL_CreateContext(window);

使用此代碼,OpenGL版本報告4.1 INTEL-10.0.86 這樣可以正常工作,但我的OpenGL調用都不再有效,所以我在調用函數后檢查了OpenGL錯誤並返回1282

奇怪的是,當我將代碼更改為此時

...
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
//SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
//SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
//SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); //I read somewhere that this may help
...

它提供相同的輸出4.1 INTEL-10.0.86並返回相同的OpenGL錯誤(1282),並且沒有任何OpenGL函數可以工作。

而我的最后一次嘗試也失敗了,結果不同。 這是我的代碼:

...
//SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); //I read somewhere that this may help
...

返回的新OpenGL版本為null但如果我將major_version更改為2並將minor_version更改為1,則返回到我的原始版本2.1 INTEL-10.0.86

有誰知道這個問題的解決方案?

- 編輯 -

在做了一些額外的研究之后,如果OpenGL在每次調用后都返回1282,那么上下文沒有正確初始化。 這讓我相信這可能是SDL無法正確創建上下文的錯誤? (老實說,我不知道那么多,所以我正在努力)。 我將向SDL提交一個錯誤,看看是否有幫助。

SDL_GL_CONTEXT_PROFILE_CORE

...

......我的OpenGL調用[ glMatrixMode,glLoadIdentity,glLoadIdentity,glBegin ]都不再工作了......

這些都已棄用,不能在Core上下文中使用。

如果要繼續使用Core上下文,則必須重新編寫程序以不使用已棄用的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM