嵌入式环境图形加速浅析(以机顶盒平台为例)
来源:互联网 发布:vps解析域名 编辑:程序博客网 时间:2024/05/29 18:35
一、介绍下图形加速的概念
1)从横向上来说,图形加速是硬件加速的一种,所谓的硬件加速,就是用专有硬件实现某些操作,以免浪费大量的cpu资源,常见的有硬浮点处理器FPU、图形处理器GPU(也通俗称为显卡) 以及 音视频解码硬件等
图形加速在嵌入式下,一般称之为2D图形引擎,所提供的图形加速相关功能:
Alpha混合
Raster Operation
blit操作等
当然,嵌入式芯片的数据手册一般会说明是否包含2D图形引擎
若从驱动接口来看,只需关注两点:
1)是否提供类似分配显存的接口(显存对 边界对齐、存放位置等有一定要求),不能使用一般的c标准函数进行操作
2)是否提供相关的blit接口,对上述显存进行操作
另外,可能部分平台提供更高层次的概念,如surface、canvas等,但实质是一样的:
引用一段使用pygame库的代码来阐明此问题(引自beginning-game-development-with-python一书):
#!/usr/bin/env python
backgroud_image_filename="caoyuan.jpg"
mouse_image_filename="hanta.jpg"
import pygame
from pygame.locals import *
from sys import exit
pygame.init()
# 创建一个screen surface,代表屏幕所在的surface
screen=pygame.display.set_mode((640,480),0,32)
pygame.display.set_caption("Hello,World!")
#创建 background 和 mouse_cursor两个 surface
#此时做的工作就是,1)分配两块显存,然后用surface管理,2)将解码后的图片导入显存
backgroud=pygame.image.load(backgroud_image_filename).convert()
mouse_cursor=pygame.image.load(mouse_image_filename).convert_alpha()
while True:
for event in pygame.event.get():
if event.type==QUIT:
exit()
#对surface进行blit操作、实际上就是对显存进行blit操作
screen.blit(backgroud,(0,0))
x,y=pygame.mouse.get_pos()
x-=mouse_cursor.get_width()/2
y-=mouse_cursor.get_height()/2
#对surface进行blit操作、实际上就是对显存进行blit操作
screen.blit(mouse_cursor,(x,y))
pygame.display.update()
1)从横向上来说,图形加速是硬件加速的一种,所谓的硬件加速,就是用专有硬件实现某些操作,以免浪费大量的cpu资源,常见的有硬浮点处理器FPU、图形处理器GPU(也通俗称为显卡) 以及 音视频解码硬件等
2)从纵向上来说,图形加速也是GPU(Graphic Process Unit)的一种,只不过功能较弱而已
图形加速在嵌入式下,一般称之为2D图形引擎,所提供的图形加速相关功能:
Alpha混合
Raster Operation
blit操作等
2D图形引擎在st7162上也称之为blitter,从字面上来说主要的功能就是提供blit,原理上提供部分二维操作,可以一个指令处理一批数据
当然,嵌入式芯片的数据手册一般会说明是否包含2D图形引擎
若从驱动接口来看,只需关注两点:
1)是否提供类似分配显存的接口(显存对 边界对齐、存放位置等有一定要求),不能使用一般的c标准函数进行操作
2)是否提供相关的blit接口,对上述显存进行操作
另外,可能部分平台提供更高层次的概念,如surface、canvas等,但实质是一样的:
引用一段使用pygame库的代码来阐明此问题(引自beginning-game-development-with-python一书):
#!/usr/bin/env python
backgroud_image_filename="caoyuan.jpg"
mouse_image_filename="hanta.jpg"
import pygame
from pygame.locals import *
from sys import exit
pygame.init()
# 创建一个screen surface,代表屏幕所在的surface
screen=pygame.display.set_mode((640,480),0,32)
pygame.display.set_caption("Hello,World!")
#创建 background 和 mouse_cursor两个 surface
#此时做的工作就是,1)分配两块显存,然后用surface管理,2)将解码后的图片导入显存
backgroud=pygame.image.load(backgroud_image_filename).convert()
mouse_cursor=pygame.image.load(mouse_image_filename).convert_alpha()
while True:
for event in pygame.event.get():
if event.type==QUIT:
exit()
#对surface进行blit操作、实际上就是对显存进行blit操作
screen.blit(backgroud,(0,0))
x,y=pygame.mouse.get_pos()
x-=mouse_cursor.get_width()/2
y-=mouse_cursor.get_height()/2
#对surface进行blit操作、实际上就是对显存进行blit操作
screen.blit(mouse_cursor,(x,y))
pygame.display.update()
- 嵌入式环境图形加速浅析(以机顶盒平台为例)
- GDB嵌入式调试(以st7162平台为例)
- 前言--嵌入式硬件接口设计(以ARM平台为例)
- Cordova3.X 环境搭建与开发入门(以android平台为例)
- AES加解密效率测试(纯软件AESCBC-128/256)--以嵌入式Cortex-M0与M3 平台为例
- c语言环境下的xml数据的序列化的过程以机顶盒向手机APK发送数据为例
- autotools精简(以webkit嵌入式浏览器移植为例)
- 元图地图开放平台-以CAD图形为底图的互联网地图开放平台
- PHP文件开启SSI(以CMSTOP环境为例)
- SSH环境搭建(以用户登录为例)
- Android开发环境配置(以windows为例)
- 利用pre-compiled headers技术以加速编译速度--以Borland C++ Builder为例(一)
- 利用pre-compiled headers技术以加速编译速度--以Borland C++ Builder为例(二)
- 利用pre-compiled headers技术以加速编译速度--以Borland C++ Builder为例(三)
- 利用pre-compiled headers技术以加速编译速度--以Borland C++ Builder为例(四)
- 利用pre-compiled headers技术以加速编译速度--以Borland C++ Builder为例(五)
- cscope如何生成特定平台的代码搜索(以mips平台为例)
- Myeclipse7.5下插件安装方法(以JBPM图形设计工具为例)
- centos中安装vmtools
- 循环赛程安排
- Android中文API 参考资料
- php views参数传递 接口调用
- nginx+lua+redis
- 嵌入式环境图形加速浅析(以机顶盒平台为例)
- android源码结构
- CodeIgniter源码分析之Model.php
- hadoop的lzo
- ORACLE里随机取一定数量的记录
- android中src和background区别
- 随手小代码——约瑟夫出圈问题/约瑟夫环
- 端口映射
- js注册按钮读秒倒计时代码