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

来源:互联网 发布:淘宝修改折扣价权重 编辑:程序博客网 时间:2024/05/06 04:52

第六章:全红屏幕


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


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


一。获取屏幕

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

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

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

//定义一个全局的 g_statestatic 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
原创粉丝点击