适用于我的 (32b) 的 SDL2 Windows 安装程序(C 语言):
-
下载SDL2_image-devel-2.0.5-mingw.tar.gz和SDL2_image-2.0.5-win32-x86.zip(32 选择其他 64)来自这里:https://www.libsdl.org/projects/SDL_image/。
-
复制“SDL2_image-devel-2.0.5-mingw\SDL2_image-2.0.5\i686-w64-mingw32\include\SDL2\SDL_image.h”到您的所有标题都是我的情况的 SDL 文件夹 "MinGW\include\SDL2"。
-
将内容从“SDL2_image-devel-2.0.5-mingw\SDL2_image-2.0.5\i686-w64-mingw32\bin”复制到” \MinGW\bin".
-
复制以下内容:"SDL2_image-devel-2.0.5-mingw\SDL2_image-2.0.5\i686-w64-mingw32\lib"到 "MinGW\lib"
-
包含这样的标题:
#include <SDL2/SDL_image.h>
-
在你的 makefile 中链接它(参见这个'... -llibSDL2_image ...'):
build:
gcc -Wfatal-errors \
-std=c99 \
./*.c \
-I"C:\libsdl\include" \
-L"C:\libsdl\lib" \
-lmingw32 \
-lSDL2main \
-lSDL2 \
-lSDL2 \
-llibSDL2_image \
-o example.exe
- 虚拟 CodeExample.c
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_timer.h>
#include <stdio.h>
int main(int argc, char *args[])
{
// attempt to initialize graphics and timer system
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) != 0)
{
printf("Error initializing SDL: %s\n", SDL_GetError());
}
// Declare pointers
SDL_Window *window;
SDL_Renderer *renderer;
SDL_Texture *bitmapTex = NULL;
SDL_Surface *bitmapSurface = NULL;
// Create an application window with the following settings:
window = SDL_CreateWindow(
"An SDL2 window", // window title
SDL_WINDOWPOS_CENTERED, // initial x position
SDL_WINDOWPOS_CENTERED, // initial y position
840, // width, in pixels
480, // height, in pixels
SDL_WINDOW_OPENGL // flags - see below
);
// Check that the window was successfully created
if (!window)
{
// In the case that the window could not be made...
printf("Could not create window: %s\n", SDL_GetError());
SDL_Quit();
return 1;
}
// create renderer which sets up graphics hardware
Uint32 render_flags = SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC;
renderer = SDL_CreateRenderer(window, -1, render_flags);
if (!renderer)
{
printf("error creating renderer: %s\n", SDL_GetError());
SDL_DestroyWindow(window);
SDL_Quit();
return 1;
}
// Load theimage into memory using SDL_Image library function
bitmapSurface = IMG_Load("image.png");
bitmapTex = SDL_CreateTextureFromSurface(renderer, bitmapSurface);
SDL_FreeSurface(bitmapSurface);
if (!bitmapTex)
{
// In the case that the window could not be made...
printf("Error creating texture: %s\n", SDL_GetError());
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 1;
}
// The window is open: could enter program loop here (see SDL_PollEvent())
while (1)
{
SDL_Event e;
if (SDL_PollEvent(&e))
{
if (e.type == SDL_QUIT)
{
break;
}
}
// Clear the window
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, bitmapTex, NULL, NULL);
SDL_RenderPresent(renderer);
}
SDL_DestroyTexture(bitmapTex);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}