从零开始-边学边做-塔防游戏-七彩三国(六)--SDL--全红屏幕

第六章:全红屏幕


前面我们已经熟悉了,如果将sdl自带的测试程序编译出目标测试程序在android手机上运行。本章,我们将创建一个自己的空的工程。并且调用SDL的接口,刷新屏幕为全红色。


申明:本文及后续内容,都是本人参考别人代码做的自我理解,如有解释错误,而误导读者,请见谅。


一。获取屏幕

开发windows程序时,SDL有这样的方式获取屏幕

SDL_Surface* pSDL_Surface = SDL_SetVideoMode(m_uiWidthPixel, m_uiHeightPixel, 32,SDL_SWSURFACE);

但是在android上没有使用成功。 也没再深究。于是采用拿来主义,从之前的那个例子中抠出了,获取屏幕的方法。

//定义一个全局的 g_state
static SDLTest_CommonState *g_state;

//首先需要下面两步初始化
int skypark_sdl_init(char **argv) {
	g_state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO);
	if (!g_state) {
		return -1;
	}
	g_state->window_flags |= SDL_WINDOW_RESIZABLE;
	if (!SDLTest_CommonInit(g_state)) {
		return -2;
	}
	return 0;
}

然后在程序主循环中获取屏幕

SDL_Event event;
	while (!done) {
		//sleep(60);
		//g_SkyparkLog.log("[%s][%d]run...", __FILE__, __LINE__);
		while (SDL_PollEvent(&event)) {
			SDLTest_CommonEvent(g_state, &event, &done);
		}
		for (int i = 0; i < g_state->num_windows; ++i) {
			if (g_state->windows[i] == NULL)
				continue;
			//按照我的理解,g_state->renderers[i],就是屏幕了。
			ShowScreen(g_state->renderers[i]);
		}
	}

二。绘制红色屏幕


void ShowScreen(SDL_Renderer * renderer) {
	sleep(1);
	static Uint64 i = 0;
	i++;
	if (i % 10 == 0) {
		g_SkyparkLog.log("[%s][%d]run...", __FILE__, __LINE__);
	}
	//设置颜色
	SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0xFF);
	//以上面的颜色擦除
	SDL_RenderClear(renderer);
	
	//将缓存刷新到实际屏幕
	SDL_RenderPresent(renderer);
}


三。编译运行:


好了,步骤虽然不多,但是其中遇到不少小问题。相信新手也会遇到各种莫名其妙的问题。所以,我上传一份打包好的代码到csdn上。有需要的朋友可以下载:

http://download.csdn.net/detail/ycg01/6784551



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值