首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >这个DirectFB Blit示例有什么问题?

这个DirectFB Blit示例有什么问题?
EN

Stack Overflow用户
提问于 2013-01-31 16:13:02
回答 1查看 2.6K关注 0票数 1

正如here所说的那样,我得到了directfb image example,并且我正在试着把它变成一个图像。所以,这是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#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;
}

这个程序的输出是很多的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
`(!!!)  *** 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变量,所以我给了它任何值来尝试)*

EN

回答 1

Stack Overflow用户

发布于 2014-06-18 06:27:21

我想让directfb显示所有旋转90度的内容,这似乎是一个很好的起点。

有两件事需要考虑:

首先,这些数字是固定点16.16FMT-因此,上面的部分是整数部分,而下面的16位是小数部分-所以0x10000将代表1(即。1 << 16),0xffff0000表示-1 (即-1 << 16)。

其次,计算似乎是针对实际的(而不是标准化的)屏幕坐标进行的,并且计算结果需要在0的范围内。屏幕宽度-1表示X和0 ..屏幕高度-1表示要显示的Y。

在您的例子中,正确的矩阵似乎是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    (-1 < 16), 0,         ((screen_width - 1) << 16),
    0,         (1 << 16), 0,
    0,         0,         (1 << 16),
}

请注意第一行上的最后一项,它将X坐标移回X坐标的正确范围。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14630174

复制
相关文章
自回归滞后模型进行多变量时间序列预测
显示了关于不同类型葡萄酒销量的月度多元时间序列。每种葡萄酒类型都是时间序列中的一个变量。
deephub
2023/01/18
1.1K0
linux 时间戳转换/dmesg 时间转换
$date +%s -d “04/24/2014 15:30:00” 1398324600
全栈程序员站长
2022/11/11
37.2K0
[蓝桥杯]时间转换
题目描述 给定一个以秒为单位的时间t,要求用 “< H> :< M> :< S> ”的格式来表示这个时间。< H> 表示时间,< M> 表示分钟, 而< S> 表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。 输入 输入只有一行,是一个整数t(0< =t< =86399)。 输出 输出只有一行,是以“< H> :< M> :< S> ”的格式所表示的时间,不包括引号。 样例输入 5436 样例输出 1:30:36 来源 基础
编程范 源代码公司
2018/04/18
1.7K0
Linux时间戳转换_时间戳转换软件
在大多数 UNIX 系统中,当前时间存储为自特定时刻以来经过的时间以简化,将时间保持为长整数。所有 UNIX 系统普遍接受的时刻是 1970 年 1 月 1 日凌晨 12:00:00。 这称为 UNIX 时间戳,并被所有现代 UNIX/Linux 系统识别。
全栈程序员站长
2022/11/09
15.7K0
Linux时间戳转换_时间戳转换软件
Google AD广告投放样式太乱怎么办 谷歌广告样式设定 Google adsense谷歌广告调整宽度
备忘:先记录下谷歌广告的地址: https://www.google.com/adsense/new/u/ 我们使用谷歌广告代码后,往往会占用屏幕满屏,特别我们移动端的时候,那么就与我们自己网站设置的样式格格不入了。我们需要让他在我们设置的样式div内部,不让他跑出去。
梦溪
2021/12/09
9690
检测谷歌广告是否被屏蔽
虽然自己的网站流量十分少,但是还是加了一个谷歌广告,用来自己耍。添加之后发现很多电脑浏览器插件很直接进行屏蔽,手机浏览器也会进行屏蔽。虽然自己也不喜欢广告,但是如何在检测出广告被屏蔽后在原来位置上输出一句话提醒浏览者不要关闭本站的广告展示呐? 自己在网上找了一些有用的方法,一种是检测广告div的高度,如果高度是0则进行了屏蔽,另一种是自己建一个js,其名称和路径与真实广告的js差距不大,能让插件误拦截,通过检测该js是否加载来判断是否遭到屏蔽。 因为不同的广告插件可能自己拦截方式不同,我就把这两种方法结合一下来进行判断。 首先在自己的广告单元上加两个div(可以根据自己的需求,自行更改)
布衣者
2021/09/07
1.9K0
linux时间戳转换成时间指令_时间戳转换公式
原文地址:http://wanping.blogbus.com/logs/28663569.html
全栈程序员站长
2022/11/11
9.2K0
个人备案的网站,可以接谷歌广告或者广告吗
网站运营主要是看网站是否存在盈利性质,如果存在盈利性质的话单独有网站个人备案是不可以的。 按照相关的法律规定,涉及到盈利性网站需申请《增值电信业务经营许可证》,此证书针对的就是经营性网站或发布资讯类网站。
吃猫的鱼Code
2023/02/02
6.3K0
时间戳转换
生成当前时间戳 root@BJ-CentOS7 ~ # date +%s 转换指定时间为时间戳 root@BJ-CentOS7 ~ # date -d "2019-01-24 14:35" +%s 转
大大大黑白格子
2020/06/10
6.1K0
js时间转换
//时间戳格式化 //时间转换 function stamptime(time) { var date = new Date(time) var Y = date.g
阿超
2022/08/16
12.1K0
linux时间戳转换为时间_linux时间转换为时间戳
/*************************************************************************************
全栈程序员站长
2022/11/09
8.5K0
Java时间转换
package com.example.administrator.huijianzhi.util; import android.annotation.SuppressLint; import
用户5899361
2020/12/07
5.9K0
Python时间与时间戳转换
python的datetime转换为UNIX时间戳 #导入time模块(用于转换时间戳) In [1]: import time   # 导入datetime模块(用于获取当前标准时间) In [2]: import datetime   #获取当前时间并赋值给变量what_Time In [3]: what_Time = datetime.datetime.now()   #打印what_Time In [4]: print what_Time 2017-04-24 08:56:31.096301  
行 者
2018/03/26
3.6K0
Python时间与时间戳转换
谷歌广告联盟 Google AdSense 申请经验
如果是博客类网站,应该保证博文在50篇以上申请比较好通过,否则谷歌审查人员会以内容太少理由驳回申请。
KEVINGUO_CN
2020/03/17
1.5K0
为GoogleAdsense谷歌广告添加占位图
谷歌广告部分页面有时不显示广告内容,结果广告位置就空白了,很不美观,所以就有了这个方案,就相当于给广告位加了个背景,在广告无法显示时则就会显示广告招募中的文字内容。
泽泽社长
2023/04/17
3730
为GoogleAdsense谷歌广告添加占位图
c++时间戳转换日期格式_java时间戳转换成时间
因工作需要,经常跟时间戳打交道,但是因为它仅仅是一个数字,我们很难直接看出它有什么意义,或两个时间戳之间究竟差了多长的间隔。于是从MSDN for Visual Studio6上找到了时间戳转换成日期时间的算法。本文除介绍这一算法外,还提供一个示例代码。
全栈程序员站长
2022/09/27
6.1K0
Mysql日期转换函数、时间转换函数
MySQL 日期、时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。 2. MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format):
星辰sea
2022/10/29
7K0
开发者对工具蔓延、数据滞后、长时间等待感到不满
根据 Port 发布的最新调查,内部开发者门户尚未解决工程团队面临的一些最具挑战性的瓶颈。
云云众生s
2025/02/07
1160
Python | 时间戳转换
爬数据的时候,有没有遇见过爬下来的数据日期显示为一大串数字?像上图中的beginbidtime变量,这是时间戳。时间戳是啥?是指格林威治时间自 1970 年 1 月 1 日(00:00:00 GMT)(一般把这个时点称为 unix 纪元或 POSIX 时间)至当前时间的总秒数。时间戳的好处是能够唯一地表示某一刻的时间,但这显然不利于肉眼观察和分析数据,所以下面我们将时间戳转化为常见的时间格式。
PyStaData
2020/09/14
3.7K0
Python | 时间戳转换
c语言时间戳转换日期格式_c语言时间转换为时间戳
时间戳是计算机中记录时间的一种方法,某一时刻的时间戳指的是从 1970 年 1 月 1 日 0 时 0 分 0 秒开始到该时刻总共过了多少秒。请编程任意输入一个整数,然后计算出它表示的是哪一天哪一刻。
全栈程序员站长
2022/11/10
7.2K0
c语言时间戳转换日期格式_c语言时间转换为时间戳

相似问题

如何在Java配置中使用工厂方法初始化Spring bean?

21

在Spring配置中使用工厂方法

15

Spring -在配置中使用工厂bean?

31

对使用工厂方法创建的bean使用spring @Transactional吗?

210

用工厂方法从XML到Java的Spring

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文