我开始学习SDL,我正在关注互联网上的一些教程。 我写了一个简单的代码,在屏幕上显示窗口2秒钟:
#include <SDL2/SDL.h>
#include <stdio.h>
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
int main(void)
{
SDL_Window* window = NULL;
SDL_Surface* screenSurface = NULL;
if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
}
else
{
window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
if( window == NULL )
{
printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
}
else
{
screenSurface = SDL_GetWindowSurface( window );
SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) );
SDL_UpdateWindowSurface( window );
SDL_Delay( 2000 );
}
}
SDL_DestroyWindow( window );
SDL_Quit();
return 0;
}
当我运行它时,效果很好。但是,如果我使用Valgrind
运行它,则会显示许多无效的读取和其他错误。要查看错误,请参阅here
所有这些似乎都与fglrx_dri.so
有关。
长篇故事是:
我最近买了戴着Ubuntu 14.04和AMD显卡的戴尔笔记本电脑。我无法安装它。我尝试了很多方法来安装它但失败了。因此,当我在终端lspci | grep VGA
上输入时显示:
00:02.0 VGA compatible controller: Intel Corporation Broadwell-U Integrated Graphics (rev 09)
所以我正在使用我的集成显卡。 (而不是我的AMD图形显卡)
当我在终端fglrxinfo
上输入时:
display: :0 screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon R7 M260
OpenGL version string: 4.4.13374 Compatibility Profile Context 15.20.1013
根据第3节中的this,我的AMD图形视频卡已安装并正常运行。 (但事实并非如此)。
所以,回到我的SDL问题,当我运行我的第一个SDL程序时,
显示错误libGL error: dlopen /usr/lib/fglrx/dri/i965_dri.so failed (/usr/lib/fglrx/dri/i965_dri.so: cannot open shared object file: No such file or directory)
。我打开this问题,但我无法解决。所以我将文件i965_dri.so
复制到目录/usr/lib/fglrx/dri/
。这会使此错误消失。
所以,任何人都知道为什么会这样?我真的想让我的图形显卡工作。但经过多次尝试,我忘记了我的图形显卡,只是想让我的SDL代码正常工作,没有错误或内存泄漏。
谢谢!