1
我得到了directfb image example,和我想要做塊的圖像,如上所述here。所以,這是我的代碼:這個DirectFB Blit例子有什麼問題?
#include <stdio.h>
#include <unistd.h>
#include <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__); \
DirectFBErrorFatal(#x, err); \
} \
}
/* reflection against y */
static int DFB_FIXED_POINT_ONE = 1;
static const s32 mat_y[9] = {
-DFB_FIXED_POINT_ONE, 0, 0,
0, DFB_FIXED_POINT_ONE, 0,
0, 0, DFB_FIXED_POINT_ONE
};
static IDirectFBSurface *logo = NULL;
int main(int argc, char **argv) {
int i;
DFBSurfaceDescription dsc;
IDirectFBImageProvider *provider;
DFBCHECK(DirectFBInit (&argc, &argv));
DFBCHECK(DirectFBCreate (&dfb));
DFBCHECK(dfb->SetCooperativeLevel (dfb, DFSCL_FULLSCREEN));
dsc.flags = DSDESC_CAPS;
dsc.caps = DFBSurfaceCapabilities(DSCAPS_PRIMARY | DSCAPS_FLIPPING);
DFBCHECK(dfb->CreateSurface(dfb, &dsc, &primary));
DFBCHECK(primary->GetSize (primary, &screen_width, &screen_height));
DFBCHECK(dfb->CreateImageProvider (dfb, "iconC.png", &provider));
DFBCHECK(provider->GetSurfaceDescription (provider, &dsc));
DFBCHECK(dfb->CreateSurface(dfb, &dsc, &logo));
DFBCHECK(provider->RenderTo (provider, logo, NULL));
provider->Release(provider);
for (i = -dsc.width; i < screen_width; i++) {
DFBCHECK(primary->SetRenderOptions(primary, DSRO_MATRIX));
DFBCHECK(primary->SetMatrix(primary, mat_y));
DFBCHECK(primary->FillRectangle (primary, 0, 0, screen_width, screen_height));
DFBCHECK(primary->Blit (primary, logo, NULL, i, (screen_height - dsc.height)/2));
DFBCHECK(primary->Flip (primary, NULL, DSFLIP_WAITFORSYNC));
usleep(1000*10); // 10 microseconds
}
logo->Release(logo);
primary->Release(primary);
dfb->Release(dfb);
return 23;
}
這個程序的輸出了很多:
`(!!!) *** WARNING [rotation not yet implemented] *** [gfxcard.c:2075 in dfb_gfxcard_blit()]`
`(!!!) *** WARNING [rotation not yet implemented] *** [gfxcard.c:2075 in dfb_gfxcard_blit()]`
`(!!!) *** WARNING [rotation not yet implemented] *** [gfxcard.c:2075 in dfb_gfxcard_blit()]`
這是我的DFB版中的問題?我正在使用DirectFB 1.4.11。
有沒有辦法使這個例子跑的blit的形象呢?
*(順便說一句,我聽不懂的DFB_FIXED_POINT_ONE變量,所以我給任何價值給它的嘗試)
出於好奇,你是如何編譯DirectFB的?我嘗試過多次並失敗(頭文件沒有正確安裝)。我很樂意提供幫助,但我甚至無法得到*編譯*的東西! – fouric
據我所知,它在Ubuntu 10.10中使用DirectFB 1.4.11編譯時沒有問題。 –
您是否可以重複下載和編譯DirectFB所用的確切步驟,然後重新編譯上述程序?順便說一下,是否有一個特別的原因,你使用舊的1.4.x系列而不是新的1.6.x系列? – fouric