描述
最近要做智慧讲台的接收画板,使用sdl2 来画接收到的所有数据,之所以要使用sdl2,是有很多细节原因,先搭框架,本身是要能接收也要能画,使用事件驱动,websocket协议接收,自己写websocket协议服务器,慢慢补充内容,结束时讲台的接收也就做好了,follow me,所涉及的协议包含以下几大协议 http websocket httpflv rtsp dlna 组播协议
协议 http协议 websocket协议 httpflv rtsp协议 dlna 协议 组播协议 智能化智能化需要用到的东西很多,有三维和tensorflow以及darknet等一些工具,具体会补充进来,做一步补充一步,如画画课件的识别,老师手势的识别,以及其他数学,物理,历史,地理课件的辅助方法,需要用到人工智能方面的东西。
#include
#include
#include
extern "C"
{
#include "SDL2/SDL.h"
#include "SDL2/SDL_mouse.h"
#include "SDL2/SDL_surface.h"
//if you want sdl image
//#include "SDL2/SDL_image.h"
};
#ifdef _WIN32
//#define main main
#pragma comment(lib,"sdl2.lib")
#pragma comment(lib, "SDL2main.lib")
#endif
class c_drawing {
SDL_Window *v_pWindow = NULL;
SDL_Renderer *v_pRender = NULL;
SDL_Texture * v_pTexture = NULL;
bool v_Run = false;
public:
bool func_running()
{
return v_Run;
}
void render()
{
SDL_RenderClear(v_pRender);
SDL_RenderCopy(v_pRender, v_pTexture, NULL,NULL);
//SDL_RenderCopy(m_pRenderer, m_pTexture, NULL, NULL); // NULL means that use all texture( and renderer)
//SDL_RenderCopyEx(m_pRenderer, m_pTexture, &m_srcRect, &m_dstRect,0, 0, SDL_FLIP_HORIZONTAL);
//SDL_RenderCopyEx(m_pRenderer, m_pTexture, &m_srcRect, &m_dstRect,0, 0, SDL_FLIP_VERTICAL);
SDL_RenderPresent(v_pRender);
}
int getMouseKeyEven(void *opaque) {
SDL_Event ev;
if (SDL_PollEvent(&ev))
{
if (SDL_KEYDOWN == ev.type) // SDL_KEYUP
{
if (SDLK_DOWN == ev.key.keysym.sym)
{
printf("SDLK_DOWN ...............\n");
}
else if (SDLK_UP == ev.key.keysym.sym)
{
printf("SDLK_UP ...............\n");
}
else if (SDLK_LEFT == ev.key.keysym.sym)
{
printf("SDLK_LEFT ...............\n");
}
else if (SDLK_RIGHT == ev.key.keysym.sym)
{
printf("SDLK_RIGHT ...............\n");
}
}
else if (SDL_MOUSEBUTTONDOWN == ev.type)
{
if (SDL_BUTTON_LEFT == ev.button.button)
{
int px = ev.button.x;
int py = ev.button.y;
printf("mouse left x, y %d %d ...............\n", px, py);
}
else if (SDL_BUTTON_RIGHT == ev.button.button)
{
int px = ev.button.x;
int py = ev.button.y;
printf("mouse right x, y %d %d ...............\n", px, py);
}
}
else if (SDL_MOUSEMOTION == ev.type)
{
int px = ev.motion.x;
int py = ev.motion.y;
printf("x, y %d %d ...............\n", px, py);
}
else if (SDL_QUIT == ev.type)
{
v_Run = false;
printf("SDL_QUIT ...............\n");
return 0;
}
}
return 0;
}
bool init(const char *title, int xpos, int ypos, int height, int width, int flags)
{
if (SDL_Init(SDL_INIT_EVERYTHING)
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?