directx(directDraw)与GDI

深入分析MFC之GDI原理透析 为什么会使用GDI呢? 首先要理解一般显示器,是将要显示的内容存放在显存中,framebuffer就是用来存储显示的数据,由DMA自动读取数据将其显示在窗口中,而这里显示的只是一个个的像素点。通常是先显示一行的像素点,发出水平同步信号后,再显示下一行,当整个一屏幕的数据显示完全后,才会发出垂直同步信号,发出下一帧数据。注意这里。。。 MFC如何使用GDI? 首先对于GDI而言,他并不是将图像直接显示在设备上,而是将显示的数据首先绘制在一个设备描述表DC中,这里面存储了显示图像的描述字段,包括物理设备各种状 阅读详情

GDI(Graphics Deveice Interface,图形设备接口),利用GDI编程,可以不考虑硬件的具体特性,直接调用Windows API中的图形处理函数处理当前DC即可。这的确很方便,但却是以降低处理速度为代价。因为它不能直接访问硬件,需要通过操作系统间接访问。
Microfost 为迎合市场需求,推出了DirectX。它既能像Windows GDI一样使用方便,又可以直接对硬件抽象层HALL(Hardware Abstranaction Layer)操作,速度比GDI快得多。DirectX 主要包括 DirectDraw Direct3D DirectMusic DirectPaly DirectInput DirectSetup七部分。
也就是说DirectX是GDI的升级。

虽然两者都可以用来2D绘图,但差别还是很大的。

DirectDraw的功能上要远远大于GDI,因为DirectDraw多用于游戏开发,GDI或GDI+多用于软件开发。绘图功能就可想而知了。
而且GDI是用于Windows底层API作为基本绘图方法,比如Windows中的窗口都是GDI输出的,如果你学过SDK(API)编程的化,对此会很熟悉,比如你看看任务管理器的进程,几乎所有进程都需要加载一个重要的dll,那就是“gdi32.dll”.
而directdraw则多用于游戏中或媒体中,用于对图形操作更细腻的领域,当然目前更广泛的技术是Direct3D或OpenGL,当然directdraw也是DirectX中不可缺少的一部分。
总结一下。windows系统的绘图要求并不高,因此gdi是这里的老大,但对于专业的游戏或图形开发商,微软有创造了DirectX(其中包括directdraw)来满足他们的要求。

 

GDI为计算机用户和计算机硬件之间提供了一个抽象层,在此层的基础上,用户可以通过简单的调用Win32的图形函数进行图形显示。
GDI的一大缺憾就是,它不是为具有高表现力的多媒体软件和游戏而设计的,设计者们开发它的主要用途是运行商业应用软件诸如:Word字处理软件、Excel电子表格、Explorer浏览器等。GDI只提供了访问系统主存的能力,而不提供直接访问显存的能力,并不能从具有某些加速特性的显卡中获得其优良特性。简而言之,GDI对绝大多数的商业软件来说是相当完美的,但对于多媒体软件和游戏来说,它却是低速和低效的。
另一方面,DirectDraw可以提供给开发者代表了真实显示内存的绘图页面。这意味着,只要你使用了DirectDraw,你就可以直接操纵显卡上的内存,图形显示变得出奇的快速。而且这些页面代表了显存中连续的内存块,使得在页面中寻址和读写变得非常方便。

一句话,DirectDraw就是GDI的升级版 。

 

ddraw提供了直接显存操作功能,  
  但是对于集成显卡的意义不大,因为它使用的是内存作为显存来使用,显卡和内存之间的通讯是浪费时间的  
   
  另外从描述上看你改造后的算法已经不能算作是GDI操作了,而是直接内存地址操作  
   
  因此同样是内存之间的操作,   效率上不会有太大的区别的   
  独立显卡不同,ddraw可以直接操作显存,而gdi或者你的办法是对内存处理,然后从内存copy数据到显存,自然慢

 

 更多内容请访问:www.b2notes.com

使用asm分析jar包加载类

 

 

 

【视觉】GDI+、OpenGL DirectX对比 是三种不同的图形渲染技术,它们在功能、性能、使用场景以及平台支持等方面存在显著差异。 阅读详情

相关推荐

使用DirectDrawGDI绘图

使用DirectDraw比使用GDI更快地绘制图形

对一个2D的游戏DirectXGDI+的性能差别大吗?

目前在绘图中主要采用的是GDI+,就是用CImage::Draw函数绘图的,然后我发现在把WM_TIMER的间隔设置到非常短(1ms),并且现在还没加什么复杂功能(基本也就是人物走一走)的情况下,游戏只能跑到30帧出头(我将两次重绘之间的时间差输出了出来,显示为32ms),我觉得这是不是有点不太正常?对于这个纯2D的游戏,如果把绘图部分改用DirectXDirectX似乎有一个ID3DXSprite类)实现的话,对性能的提升大吗?的性能差异,以及你的现状潜在优化方向。使用更高精度的定时器机制(如。

小宝哥Code的专栏 2197

GDIDirectX对比

原理对比:GDIDX在原理框架设计上是完全不同的,有几个重要的方面决定了它们是没法结合。1.现代的2D库(包括GDI)都基于画布来操作,或者叫位图区域,而3D库的操作对象只是场景3D物体,没有画布概念,你在显示器上看到的只是渲染流水线中的最后一个环节(光栅化)而已。2.计算单元的设计理念不同。CPU是通用指令,能干所有事,包括3D运算,只是效率低而已;GPU只有有限的专用指令,它的目的是通过...

qq_23018459的博客 1万+

gdi gdiplus directx

GDIWindows中定义为Graphics Device Interface,即图形设备接口,是Windows API(Application Programming Interface)的一个重要组成部分。它是Windows图形显示程序实际物理设备之间的桥梁,GDI使 得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行操作。它的桥梁作用体现在: (1)用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。 为实现图形设备无关性

Bob's Plife 2565

DirectX5.0最新游戏编程指南 DirectDraw篇 一、DirectDraw的基本图象概念

 DirectX5.0最新游戏编程指南 DirectDraw篇    DirectDrawDirectX SDK的主要部分之一,它允许你直接对显示内存操作,支持硬件位块传输、硬件覆盖、表面翻转,并且保持同目前的基于Windows的应用程序驱动程序兼容。    DirectDraw是一种软件接口,它除了能直接对显示设备存取外,还保持同Windows图形设备接口GDI(Graphics D

holyfire的专栏 2627

directdraw 学习总结

ddraw可以直接操作显存,而gdi或者你的办法是对内存处理,然后从内存copy数据到显存,所以DDRAW比GDI高效! DirectX学习: DirectX中最重要的部分就是DirectDraw了,它是微软最先开发的组件,其中有个概念 图像协处理器。图像协处理器主要用于处理显示,它CPU是并行工作的,由于对图形显示来说,最多的操作时把某块内存的内容移动到另一块内存,所以最初的图形协处理器

smilestone322的专栏 4452

DirectX8.1的DirectDraw7研究手记(一)

这几日修改以前写的基于GDI的小游戏,由于机器较慢,所以游戏运行很慢,所以决定研究一下用DirectX8.1的DirectDraw来把游戏修改一下。以前看过网上朋友写的DirectDraw的资料,大多是写IDirectDraw接口的,于是决定研究一下IDirectDraw7的使用。DirectX8.1中有关DirectDraw的接口共有IdirectDraw、IdirectDraw2、Idir

Timesking的专栏 1989

DirectX5.0最新游戏编程指南 DirectDraw篇(转)

    DirectDrawDirectX SDK的主要部分之一,它允许你直接对显示内存操作,支持硬件位块传输、硬件覆盖、表面翻转,并且保持同目前的基于Windows的应用程序驱动程序兼容。    DirectDraw是一种软件接口,它除了能直接对显示设备存取外,还保持同Windows图形设备接口GDI(Graphics Device Interface)兼容。对于图形来说,它并不是一种高级应

hollysky的专栏 2185

游戏开发中——底层绘图接口的作用

    从代码层面来讲,游戏引擎是一套对底层绘图、音频、操作系统接口的封装实现。     要实现游戏屏幕上画线条的时候,画线的接口函数在背后分解、组合、计算,并将绘制工作交给底层绘图接口。 几种常见的绘图接口      5 种 Windows 下最流行的 2D绘图接口(即API,全称Application Programming Interface)。 - OpenGL      Op...

xiaokunzhang的博客 1612

DirectX图形处理(1)

DirectDrawDirectX API的组成部分,用于直接操纵显示内存、硬件传输、硬件覆盖支趾头砻嬷С帧?/SPAN>DirectDraw在保持现有基于Microsoft Windows的应用程序设备驱动程序兼容的同时提供这些功能。DirectDraw是一个可在保持Windows图形设备接口(GDI)兼容的同时直接访问显示设备的软件接口,不是用于图形的高级API。DirectDra

daviyang35的专栏 1363

DirectX Programmer's Reference Components

DirectX Programmer's Reference Components:DirectDraw、DirectSound、DirectPlay、Direct3D、DirectInput、DirectSetupAutoPlay

山里来的鱼 1021

MSDN DirectDraw 介绍

DirectDraw的® API提供了硬件支持加速的2 - D图形。它提供快速访问显示硬件,同时保持Windows图(GDI)的形设备接口兼容性。 DirectDraw是为在发生系统显示设备内存并采用了硬件加速下的专门内存管理器。DirectDraw,您可以分配熟练掌握系统设计绘图记忆体,包括双方的转让。Embedded CE的视窗DirectDraw是改编的DirectDraw基于Wi...

weixin_34162401的博客 114

DDrawCompat完整指南:3步解决Windows 10/11上DirectX 1-7老游戏兼容性问题

Windows 11上打开老游戏,黑屏、闪烁或者直接闪退,多半是年代久远的图形API没人管了。DDrawCompat就是冲着这件事来的DirectX 1-7老游戏兼容性修复工具:往游戏目录丢一个ddraw.dll,大部分DirectDraw兼容性问题就能解决。它适合手里有2000年代老游戏、想在现代Windows上正常玩起来的人。 ## 它是什么:先花30秒判断DDrawCompat适不适合你

gitblog_00466的博客 1059

DirectDraw兼容指南:让DirectX 1-7老游戏Windows 11正常运行的DDrawCompat完整上手

一台宽屏显示器,一个只支持4:3的老游戏:全屏被拉成两条黑边夹着的扁图,或者直接因为Direct3D 7创建设备失败而闪退。这类问题在Windows 1011上很常见,DDrawCompat做的DirectDraw兼容层就是针对这个场景的:它不改游戏代码,只替换游戏加载的ddraw.dll,让基于DirectX 1-7的旧程序在现代系统上正确显示并维持可用性能。 ## 它是什么:一个Direc

gitblog_00515的博客 242

@composio/json-schema-to-zod 的 Zod v3 兼容性端到端测试指南

在 Composio 的 monorepo 中,`@composio/json-schema-to-zod` 负责把 JSON Schema(draft 4+)在运行时转换为 Zod 校验对象,是工具参数 schema 各 Agent 框架(OpenAI、Claude、LangChain 等)之间最重要的桥接层之一。由于生态中既有项目仍大量依赖 Zod v3,而新项目已开始迁移到 Zod v4,

gitblog_00667的博客 200

DDrawCompat 使用指南:Win10/Win11 老游戏 DirectDraw 兼容问题的完整方案

在 Win11 上双击运行一款 2003 年的游戏,窗口闪一下黑屏,或者直接崩溃退出——多数情况卡在 DirectDraw 上。DDrawCompat 是一个开源的 DirectDraw 兼容层:把游戏目录里的 ddraw.dll 换成它提供的版本,即可在不改一行游戏代码的前提下,修复老游戏Windows Vista/7/8/10/11 上无法启动、黑屏、画面错乱一类问题,是 2D 老游戏最常

gitblog_00277的博客 212
上一篇: 堆栈与函数调用
下一篇: 惊人发现,ie6下的select隐藏有bug
bingby
博客等级 码龄17年 5粉丝 31原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值