DirectFB的简单示例

代码是从网上找来的,URL我忘记了~~

在一个DFB的板子上运行这个程序,可以在屏幕上画一条直线,蓝色的。具体的DFB的程序我还没有分析,DFB的API我也不是很熟悉,只是记录在这里。方便使用。

至少可以作为DFB环境搭建是否成功的测试么~

#include<stdio.h>
#include<unistd.h>
#include<directfb/dfb_types.h>
#include<directfb/directfb.h>

static IDirectFB *dfb = NULL;
static IDirectFBSurface *primary = NULL;

static int screen_width = 0;
static int screen_height = 0;
#define DFBCHECK(x...) \
{ \
	DFBResult err = x; \
	\
	if (err != DFB_OK) { \
		fprintf(stderr, "%s <%d>:\n\t",__FILE__, __LINE__); \
	} \
}

int main(int argc, char **argv)
{
	DFBSurfaceDescription dsc;
	DFBCHECK(DirectFBInit(&argc, &argv));

	DFBCHECK(DirectFBCreate(&dfb));
	DFBCHECK(dfb->SetCooperativeLevel(dfb, DFSCL_FULLSCREEN));

	dsc.flags = DSDESC_CAPS;
	dsc.caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING;

	DFBCHECK(dfb->CreateSurface(dfb, &dsc, &primary));
	DFBCHECK(primary->GetSize(primary, &screen_width, &screen_height));

	DFBCHECK(primary->FillRectangle(primary, 0, 0, screen_width, screen_height));

	DFBCHECK(primary->SetColor(primary, 0x80, 0x80, 0xff, 0xff));
	DFBCHECK(primary->DrawLine(primary, 0, screen_height/2, screen_width-1, screen_height/2));
	DFBCHECK(primary->Flip(primary, NULL, 0));
	sleep(5);
	primary->Release(primary);
	dfb->Release(dfb);
	return 23;
}

Makefile,里面的变量自己根据实际情况进行改动

ROOTFS= ****

CC = ****-gcc
PROG_NAME = directfb_init 
SRCS = main.c

OBJS = ${SRCS:.c=.o}

LIBS=gtk+-2.0

CFLAGS += -I${ROOTFS}/usr/include/directfb

LDFLAGS += -ldirectfb
LDFLAGS += -ldirect
LDFLAGS += -lfusion
LDFLAGS += -lz

all: ${PROG_NAME}

#${PROG_NAME}:${OBJS}
${PROG_NAME}:${SRCS}
	${CC} --sysroot=${ROOTFS} -o ${PROG_NAME} $^ ${LDFLAGS} ${CFLAGS}

${OBJS}:${INCS}

.c.o:
	${CC} -c {1}lt;  ${LDFLAGS} ${CFLAGS}

clean:
	rm -f *.o ${PROG_NAME}

rebuild: clean all	

gcc的 --sysroot=dir 是指定根文件系统的路径,因为我用了交叉编译么~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值