SDL2无效的渲染器

时间:2015-07-25 15:37:38

标签: sdl-2 true-type-fonts renderer

我相信我在这里有一个SDL2错误,我想要一些验证。当我创建渲染器时它是无效的,因此我无法初始化SDL_ttf。这是一个快速演示程序,展示了我的xubuntu 14.04发行版上的问题。我的显卡是NVIDIA GTX 550 Ti。驱动程序版本331.113专有,经过测试。

#include <SDL2/SDL.h>

#include <string>
#include <stdexcept>
#include <iostream>

using namespace std;

int main() {
SDL_Window* _window;
SDL_Renderer* _renderer;

if( SDL_Init( SDL_INIT_EVERYTHING ) != 0 ) {
    string error( SDL_GetError() );
    throw runtime_error( "SDL could not initialize! SDL Error: " + error );
}

_window = SDL_CreateWindow( "Conscious", SDL_WINDOWPOS_UNDEFINED,
        SDL_WINDOWPOS_UNDEFINED, 500, 500, SDL_WINDOW_SHOWN );
if( _window == NULL ) {
    string error( SDL_GetError() );
    throw runtime_error( "Window could not be created! SDL Error: " + error );
}

_renderer = SDL_CreateRenderer( _window , -1,
        SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC );
if( _renderer == NULL ) {
    string error( SDL_GetError() );
    throw runtime_error( "Renderer could not be created! SDL Error: " + error );
}

cout << SDL_GetError() << endl;

return 0;
}

让我知道你的想法!

谢谢, 乔纳森

- 编辑 -

如果您取出SDL_image和SDL_ttf,渲染器仍会返回为无效。 在具有相同硬件的Windows上也不会发生这种情况。如果这不是一个错误,那么有人可以解释这个简单例子可能出现的问题吗?

- 编辑编辑 - 此代码打印出&#34;无效的渲染器&#34;在我的系统上。如果您有SDL2,请运行它并告诉我您是否也这样做。

1 个答案:

答案 0 :(得分:1)

虽然确实会生成“无效的渲染器”消息,但这不是问题,因为SDL_GetError文档指出You must check the return values of SDL function calls to determine when to appropriately call SDL_GetError().,而SDL没有理由在{{1}中查找错误说明}}

顺便说一下,为什么会发生这种情况:

GetError

Breakpoint 1, 0x00007ffff7b00e90 in SDL_SetError_REAL () from /usr/lib64/libSDL2-2.0.so.0 (gdb) backtrace #0 0x00007ffff7b00e90 in SDL_SetError_REAL () from /usr/lib64/libSDL2-2.0.so.0 #1 0x00007ffff7b8f124 in SDL_GL_GetProcAddress_REAL () from /usr/lib64/libSDL2-2.0.so.0 #2 0x00007ffff7b8f80b in SDL_GL_GetAttribute_REAL () from /usr/lib64/libSDL2-2.0.so.0 #3 0x00007ffff7b41bcf in GL_CreateRenderer () from /usr/lib64/libSDL2-2.0.so.0 #4 0x00007ffff7b3b66c in SDL_CreateRenderer_REAL () from /usr/lib64/libSDL2-2.0.so.0 #5 0x0000000000401383 in main () 调用GL_CreateRenderer来获取上下文版等等,它试图加载GL函数,这需要有效的渲染器,但它还没有。虽然不是最令人愉悦的解决方案,但它运作良好并且它不是一个错误。您在Windows上没有它的可能原因是因为它使用不同的渲染器(d3d?)。