`
haoningabc
  • 浏览: 1477737 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sdl笔记

阅读更多
sdl教程教程
https://github.com/Twinklebear/TwinklebearDev-Lessons

asm.js的教程
https://github.com/3dgen/cppwasm-book
入门
http://www.ruanyifeng.com/blog/2017/09/asmjs_emscripten.html



#######
vim格式化:
1,gg 跳转到第一行
2,shift+v 转到可视模式
3,shift+g 全选
4,按下神奇的 =


centos7安装

yum install SDL SDL-devel SDL-static -y
helloworld
https://www.linuxidc.com/Linux/2012-12/75255.htm

main.c
#include "SDL/SDL.h"  
int main( int argc, char* args[] )  
{  
    //Start SDL  
    SDL_Init( SDL_INIT_EVERYTHING );  
    //Quit SDL  
    SDL_Quit();  
    return 0;      
} 

加载一张图片
在mac下的例子参考
https://github.com/killinux/ffmpeg-leaning/tree/master/sdl/sdl_practic_1
或者我的mtcode
#include <iostream>
extern "C" {
#include <SDL2/SDL.h>
#include <SDL2/SDL_test_images.h>
}
using namespace  std;

const int WIDTH = 960, HEIGHT = 540;
int main() {

    SDL_Surface *imageSurface = NULL;
    SDL_Surface *windowSurface = NULL;

    if (SDL_Init(SDL_INIT_EVERYTHING) < 0) {
        cout << "SDL could not initialized with error: " << SDL_GetError() << endl;
    }
    SDL_Window *window = SDL_CreateWindow("Hello SDL world!", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                                          WIDTH, HEIGHT, SDL_WINDOW_ALLOW_HIGHDPI);
    if (NULL == window) {
        cout << "SDL could not create window with error: " << SDL_GetError() << endl;
    }

    windowSurface = SDL_GetWindowSurface(window);
    imageSurface = SDL_LoadBMP("little_prince.bmp");
    if (NULL == imageSurface) {
        cout << "SDL could not load image with error: " << SDL_GetError() << endl;
    }
    SDL_Event windowEvent;
    while(true) {
        if (SDL_PollEvent(&windowEvent)) {
            if (SDL_QUIT == windowEvent.type) {
                cout << "SDL quit!!" << endl;
                break;
            }
        }

        SDL_BlitSurface(imageSurface, NULL, windowSurface, NULL);
        SDL_UpdateWindowSurface(window);
    }

    imageSurface = NULL;
    windowSurface = NULL;
    SDL_DestroyWindow(window);
    SDL_Quit();
    return 0;
}

emscripten 加载文件
https://github.com/3dgen/cppwasm-book/blob/master/zh/ch3-runtime/ch3-03-fs.md






############################


emcc使用sdl2
emcc main.c -s USE_SDL=2 -o main.html

[url]https://www.jamesfmackenzie.com/2019/12/01/webassembly-graphics-with-sdl/
[/url]

https://blog.csdn.net/pkx1993/article/details/82015659?utm_source=blogxgwz4

Emscripten Ports

有用库的收集,并移植到Emscripten。Github地址:https://github.com/emscripten-ports

他们已经被整合到了emcc中。当你请求一个ports被使用时,emcc会从远程服务器获取,设置并在本地构建它,然后将其链接到您的项目,向您的构建命令添加必需的包含。
例如:SDL2是一个ports,可以请求并并使用命令-s USE_SDL=2链接他。

emcc tests/sdl2glshader.c -s USE_SDL=2 -s LEGACY_GL_EMULATION=1 -o sdl2.html

###############
SDL入门教程:
https://segmentfault.com/a/1190000011328496

emscripten 加载sdl的helloworld
hello_world_cube.cpp
#include <stdio.h>
#include <SDL/SDL.h>

#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#endif

extern "C" int main(int argc, char** argv) {
  printf("hello, world!\n");

  SDL_Init(SDL_INIT_VIDEO);
  SDL_Surface *screen = SDL_SetVideoMode(256, 256, 32, SDL_SWSURFACE);

#ifdef TEST_SDL_LOCK_OPTS
  EM_ASM("SDL.defaults.copyOnLock = false; SDL.defaults.discardOnLock = true; SDL.defaults.opaqueFrontBuffer = false;");
#endif

  if (SDL_MUSTLOCK(screen)) SDL_LockSurface(screen);
  for (int i = 0; i < 256; i++) {
    for (int j = 0; j < 256; j++) {
#ifdef TEST_SDL_LOCK_OPTS
      // Alpha behaves like in the browser, so write proper opaque pixels.
      int alpha = 255;
#else
     // To emulate native behavior with blitting to screen, alpha component is ignored. Test that it is so by outputting
      // data (and testing that it does get discarded)
      int alpha = (i+j) % 255;
#endif
      *((Uint32*)screen->pixels + i * 256 + j) = SDL_MapRGBA(screen->format, i, j, 255-i, alpha);
    }
  }
  if (SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen);
  SDL_Flip(screen);

  printf("you should see a smoothly-colored square - no sharp lines but the square borders!\n");
  printf("and here is some text that should be HTML-friendly: amp: |&| double-quote: |\"| quote: |'| less-than, greater-than, html-like tags: |<cheez></cheez>|\nanother line.\n");

  SDL_Quit();

  return 0;
}


########
问题:
1.浏览器最基本的sdl
2.加载图片?


















分享到:
评论

相关推荐

    SDL库移植笔记

    记录了SDL库成功移植到s3c6410开发板上,很详细,帮你完成移植工作

    SDL(MinGW)

    安装完成后,你可以按照`《SDL2学习笔记(一):SDL2初步》`中的教程开始编写代码。基本的SDL2程序通常会包含以下步骤: 1. 初始化SDL库,如 `SDL_Init` 函数。 2. 创建窗口,使用 `SDL_CreateWindow`。 3. 设置渲染...

    小型飞机游戏SDL版

    9. **文件操作**:`飞机游戏.doc`可能是游戏的文档,包含游戏规则、开发笔记等信息。而未列出扩展名的文件可能是源代码,可能包含C++或C语言编写的SDL程序。 10. **版本控制与打包**:压缩包中的文件表明项目可能...

    ubuntu下使用SDL和FFmpeg进行播放视频文件和实时流媒体

    在Ubuntu操作系统中,使用SDL(Simple DirectMedia Layer)和FFmpeg库进行音视频播放和实时流媒体处理是一项常见的任务。这两个强大的开源工具为开发者提供了在Linux环境下构建多媒体应用的便捷途径。 SDL是一个跨...

    linux下V4L2+SDL摄像头采集显示程序

    使用video4linux2编程接口,获得笔记本摄像头影像后,用SDL显示在X Window下。 关键点有二:其一,从video4linux2的编程接口笔者了解到其笔记本摄像头支持YUYV视频帧格式,显示在 SDL上需要将YUYV格式转换成SDL支持...

    水下迷宫 游戏 devc++5 SDL编译

    6. `新建 文本文档.txt`:这看起来是一个未命名的文本文件,可能是开发过程中的笔记或者临时数据,不直接影响游戏运行。 7. `Makefile.win`:这是Windows下的Makefile,用于自动化编译和链接过程,通过命令行运行...

    快乐成长贪吃蛇(Linux+C+SDL)

    《快乐成长贪吃蛇》是一款基于Linux平台,利用C语言编程和SDL库开发的教育娱乐游戏。这款项目旨在将经典游戏“贪吃蛇”与学习元素相结合,特别针对100美元笔记本用户,旨在提供一个寓教于乐的环境,帮助儿童在玩乐中...

    SDL2和OpenGL使用踩坑笔记经验分享

    SDL + OpenGL使用笔记 LFTK 是一个嵌入式GUI,为了开发方便,需要提供PC运行环境。我选择了SDL2+OpenGL+nanovg来实现底层的渲染,让LFTK可以运行在各个平台上。GLFW+OpenGL也是一个不错的选择,但是GLFW没有Android...

    成功交叉编译ffmpeg,sdl

    提供的"成功交叉编译ffmpeg、sdl config命令笔记.txt"文件很可能是作者在解决这些问题过程中积累的经验总结,对后续的开发者来说是一份宝贵的参考资料。 总之,成功交叉编译FFmpeg和SDL并移植到S3c2440上,需要对...

    wasm_sdl2_test:WebAssembly + SDL2的测试

    使用SDL2进行WebAssembly的小测试 播放背景音乐时,一个球在画布上弹跳。 当球击中墙壁时发出声音效果。...笔记 我只有通过将--preload-file添加到CFLAGS才能使文件加载与emscripten一起使用。 反过来,这仅适用于_

    SDlIMG精灵动画处女作devc5

    7. 新建 文本文档.txt:这可能是一个未使用的文本文件,可能是开发过程中的笔记或其他临时文件。 综上所述,这个项目是一个使用C语言和SDL库开发的初级2D游戏或动画程序,主要通过键盘控制,目前不支持鼠标交互。...

    对TinyPTC-SDL-0.3.2库的更新,通过cairo示例显示中文

    配合笔记示例,学习和实践这个新功能会变得更加直观。开发者可以参考提供的示例代码,了解如何在TinyPTC-SDL程序中正确地调用这些函数,以及如何设置必要的上下文环境,以便正确显示中文字符。在实践中,可能还需要...

    SDL2-Xcode-Template:用于 XCode 的 SDL2 Xcode 模板(4.5.2 测试)

    请添加到 SDL2 Base.xctemplate/TemplateInfo.plist @ 底部,靠近 LIBRARY_SEARCH_PATHS :) 你会明白的:)安装要安装模板,只需将 Project Templates 文件夹复制到 ~/Library/Developer/Xcode/Templates笔记有 ...

    snake-sdl2:SDL2中的经典蛇游戏

    这是诺基亚黑白屏时代的蛇游戏。... 笔记 使用箭头键浏览菜单并操纵蛇,然后按Enter选择菜单。 使用SDL2显示2D GUI和游戏。 用make编译。 用make run运行。 用清洁使干净。 作者 Shubham Chaudhary 干杯!

    C++游戏开发笔记全集

    学习如何使用工具如SDL、SFML或OpenGL在不同的操作系统上运行游戏,可以使你的作品具有更广泛的受众。 总的来说,"C++游戏开发笔记全集"涵盖了从C++基础到高级游戏开发技术的广泛内容。通过学习这个笔记,你将能够...

Global site tag (gtag.js) - Google Analytics