刚开始接触SDL,自己找了些教程看了下,然后根据官方给的demo打包了一个静态库,自己试了下,发现根本没法显示任何的内容,希望有用过的大神们指点一下,是哪里写错了
#include "SDL.h"
#include<stdio.h>
int main(int argc, char *argv[])
{
/* 创建窗口 */
SDL_Window *win = NULL;
/* 创建渲染器 */
SDL_Renderer *renderer = NULL;
/* 创建绘画表面 */
SDL_Texture *HelloTex = NULL;
/* 创建加载表面 */
SDL_Surface *Surface = NULL;
/* 使用SDL前先初始化 */
if (SDL_Init(SDL_INIT_VIDEO/* | SDL_INIT_AUDIO */) < 0)
{
printf("Unable to initialize SDL");
}
//
int landscape = 1;
int modes = SDL_GetNumDisplayModes(0);
int sx = 0, sy = 0;
for (int i = 0; i < modes; i++)
{
SDL_DisplayMode mode;
SDL_GetDisplayMode(0, i, &mode);
if (landscape ? mode.w > sx : mode.h > sy)
{
sx = mode.w;
sy = mode.h;
}
}
printf("picked: %d %d\n", sx, sy);
/* 设置窗口 */
win = SDL_CreateWindow("fred",
0, 0,
sy, sx,
SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS);
;
/* 设置渲染器 */
renderer = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED);
/* 加载图片 */
Surface = SDL_LoadBMP("space.bmp");
/* 从表面创建画图表面 */
HelloTex = SDL_CreateTextureFromSurface(renderer, Surface);
/* 释放表面 */
SDL_FreeSurface(Surface);
/* 清理渲染器 */
SDL_RenderClear(renderer);
/* 复制绘图后的表面至渲染器 */
SDL_RenderCopy(renderer, HelloTex, NULL, NULL);
SDL_RenderPresent(renderer);
/* 暂停2000毫秒 */
SDL_Delay(2000);
/* 销毁绘画表面 */ SDL_DestroyTexture(HelloTex);
/* 销毁渲染器 */ SDL_DestroyRenderer(renderer);
/*销毁窗口*/
SDL_DestroyWindow(win);
/*退出*/
SDL_Quit();
return 0;
}
图片我是直接放在了项目文件里
自己折腾了好久,下面是正确的姿势,然后还在研究画线,有用过SDL的大神求指点求鞭挞,不要怜惜我是一朵娇花