注册 登录
编程论坛 C图形专区

[讨论]>>>关于本版今后的技术讨论方向

一笔苍穹 发布于 2007-08-01 11:37, 3805 次点击
《C图形专区》已经开版一年了,请允许我代表本版全体版主感谢大家这一年以来对本版的关注和支持!现在版内虽然不算红红火火,但营造了一个较好的学习交流气氛,大家发出的提问帖都能得到答复,各种作品展示帖也都有热情的回帖。总之要谢谢大家捧场,也希望大家能一如继往的支持这个
版块!

我大致浏览了一下过去这段时间的帖子,发现很多帖子讨论的是Borland的Graphics库,也就是要使用.BGI驱动文件的那个库,有初学者关于它的提问,也有基于它的作品,而且作品中也不乏精品;另外占一定比例的帖子是讨论基于VBE的图形编程,比如自己动手采用VBE实现小型图形库的,或利用现有的图形库(如NEO SDK)完成作品的;再就是交流方法和经验的,比如如何做一个游戏,如何显示一张位图等等;其它还有很多请教帖和作品Show。

看过之后我在想,我们讨论交流的东西是不是过于狭隘,就拿比重占的最多的帖子来说,里面讨论的都是Graphics库,而这个库是上世纪八十年代的产物,其年龄可能不比我们自己的年龄小多少。论验证算法,可能还行,但论其实用性,可能就几乎为无了。

因此我的个人观点是,我们初学图形编程的时候,是可以从它开始(但我自己当时没有学它,也没有用它写过任何东西),就好像初学C的时候可以从TC开始一样,因为这些都仅仅是工具,只要掌握了最本质的知识,工具永远只是工具,任何一个当前最好的工具在二三十年后都可能过时,掌握本质才能不被工具左右,甚至可以自己制造工具。但反过来说,工欲善其事,必先利其器,一个简易的计算器终归只是计算器,而不是一台电脑。所以大家在挑选工具的时候,可以选择更好和更称手的,在高分辨率和高色深大行其道的今天,一个Graphics真的不太够用了,更多更好的工具等着我们去用:DirectX、SDL、Allegro、OpenGL、MGL…… 更多更有趣的技术等着我们探讨:游戏、3D、GUI、跨平台、底层封装…… 我希望这个版块里今后的技术讨论方向,能够有一个耳目一新的变化——我们研究最本质的方法,但我们使用更锋利的兵器!

上面这段是我自己的个人看法,我不知道大家怎么看这个问题,因为开一个讨论帖,讨论时限一个月,讨论的话题就是我们今后的技术交流方向。我先给出几种预定的看法:
1、使用利器,研究本质;(这也是我本人的看法,我保证Allegro和Graphics一样的易学易用,并且它是跨平台的,你可以轻而易举的把你的作品变成Win窗口程序)
2、研究本质,与工具无关;
3、避免高门槛,初学者先从简单工具入手;
4、想学,但没有资料参考;
5、其它不同的想法。

欢迎大家一起参与这个讨论,写下自己的想法、建议或者疑问!

[此贴子已经被作者于2007-8-1 13:44:59编辑过]

42 回复
#2
卧龙孔明2007-08-02 10:59
1.Allegro方向
2.鼠标等与图形相关的方面
#3
一笔苍穹2007-08-02 12:50
呵呵,有人回复了,希望大家都各自写上自己的意见~~一起讨论本版的未来发展方向。
#4
星星鱼虾蟹2007-08-02 15:19
其实我最想学Opengl的啦,只是很少人讨论这方面的内容,自己也无从入手
#5
卧龙孔明2007-08-02 15:28
以下是引用星星鱼虾蟹在2007-8-2 15:19:22的发言:
其实我最想学Opengl的啦,只是很少人讨论这方面的内容,自己也无从入手

几乎100%的64K3D都是用DirectX,虽然DirectX执行速度比OpenGL慢,但显卡的硬集成可以解决,新的显卡总是先适应新的DirectX,所以我觉的与其找不到OpenGL易懂详细的资料,毋宁学习DirectX

#6
一笔苍穹2007-08-02 17:46
OopenGL之前很长一段时间升级几近停止,DX却平均每年升级一次。不过现在OpenGL又开始活跃进来了。我认为在WINDOWS下,DX的确要好用些,但在别的平台OpenGL还是不可替代的。其实像Irrlicht这类引擎,都同时封装了DX和OpenGL的,让用户可以在运行时选择底层接口。
#7
starrysky2007-08-02 18:09
支持OpenGL,
不过我认为应该增加DX的内容,Graphics实在是太老了,之所以现在有这么多人问Graphics的问题,是因为大学的教材是Graphics的
#8
starrysky2007-08-02 18:11
以下是引用星星鱼虾蟹在2007-8-2 15:19:22的发言:
其实我最想学Opengl的啦,只是很少人讨论这方面的内容,自己也无从入手

没有人问OpenGL的问题,我也无从下手啊

#9
一笔苍穹2007-08-03 09:02

对啊,OpenGL方面的问题大家可以和starrysky版主讨论交流啊,他可是这方面的高手!
对了,starrysky你现在还在华科?

#10
奔跑的鸟2007-08-03 12:58
关键是例子,很少看到关于opengl或 dx的简单典型例子,无从学起.其次是软件,graphic几乎是个c编译器就自带,而pengl 和dx都需要自己去找,由于不了解,也不知道版本更新发展情况,感到无所适从.再者是辅助软件,象c语言函数查询器对新手来说是个极品,但里面只有关于graphic的图形函数,看一个图形库的函数不可能一次就记住,自己实践的时候每次都要查说明书实在是太麻烦了,因而graphic成了最方便的(因为在函数查询器里直接查找就可以了).以上是我个人的感觉和意见,说实话,要是关于opengl和dx的资料和graphic样多,谁愿意去研究个老古董而放弃最新的技术呢?所以资料才是王道啊!!
#11
一笔苍穹2007-08-03 14:00
其实我个人不认为DX(特别是其中的D3D)或OpenGL很适合初学者,学习3D图形编程必须要有一定的基础,一开始就直接接触这一块难度比较大。我觉得刚开始还是玩玩2D库,像Allegro或SDL之类的,当对图形编程有了一定的了解之后,可以再学习3D相关的东西。
说到资料,我觉得还是得自己多查多找,Allegro的中文资料虽说版本较低(云风版,针对Allegro 3),但它升级也是向前兼容的,光中文资料中讲到的东西用起来比Graphics强大的多。英语学得好的就更不在话下了,直接看英文文档。其实就算有一个OpenGL版的函数查询器,对刚开始学的朋友来说也没有太大作用,OpenGL核心函数就那么百来个,比Graphics多不到哪去,全部列个中文的说明清单出来看过之后可能还是会不知所云。所以我认为要循序渐进,从2D入手,玩玩Allegro、DDraw等,资料也是人边做边总结出来的,可以很中肯的说,网上关于DDraw的中文资料绝不会比Graphics的少。
当然,也不能光说不做,我会在我的主页里陆续加上这些东西的相关资料的,大家手上有什么好的资料也可以去我的主页注册会员上传,或是直接给我代传:dongkai329@yahoo.com.cn中文尤佳
#12
奔跑的鸟2007-08-03 14:06
呵呵,将苍穹老大的主页地址收了,一定常去学习
#13
福尔摩斯2007-08-03 14:10
比较喜欢OpenGL
#14
hjj11232007-08-04 12:37

我希望以后论坛的发展方向有两个:图形应用编程和图形底层研究。图形应用编程就是要求的OpenGL和DX之类的,图形底层研究就是这些第三方图形库它们的原理,实现。Graphics是很老,但是它对研究原理是非常合适的。OpenGL和DX和它的原理差不多,只是现在的硬件厂商对它们提供了硬件支持,免掉了某些软件负荷,运行起来更快,更流畅。我一直想问个问题:Graphics的BGI是怎么进图形库的?它的兼容性很好,我用它进图形模式还没有出过问题,都能进去。而自己写的遵循VBE3的程序就不行了,有些电脑根本进不去,黑糊糊的一个屏幕。

#15
一笔苍穹2007-08-04 13:10
只有本站会员才能查看附件,请 登录

……上接图片中的文字:
VBE的子功能设置到0x105号图形模式,而这个模式分辨率很高,15寸老显示器可能上不去,就算是17寸以上的显示器,那刷新率呢?过高或过低的刷新率都会导致显示器黑屏,并可能显示“……超出显示范围”类似的字样,这种情况在Windows或LINUX下也都可能出现,如果不是液晶显示器,你可以调一个很高的分辨率比如1600X1200,并把刷新率调到120HZ,点击应用你很可能会黑屏并看到类似超出显示范围的文字[注:这种情况在Windows XP下可能不好重现,因为现在的Win将显卡支持的分辨率和相应的刷新率用下拉列表的形式给出了,一般不会在里面给出支持不了的选项,但在LINUX下手动改显卡的config文件是很好重现这个黑屏现象的,所以显示器黑屏实为正常现象,这是一种自我保护,如果显示器不管自身的能力,而一味的满足你的设置,很可能会烧掉,比如你让它的刷新率为0!]
所以说,不能怪VESA的VBE,要怪我们没有按他标准文档的方法去实现,如果我们正确的算出了CRCT值,并在设置分辨率之前查询显示设备能支持的分辨率和刷新率,再先设置正确的刷新率,然后设置分辨率,就不会出现问题。

楼上的建议很好,我也认为我们可以走应用和原理两条路子,通过应用了解原理,通过原理实现应用,别人能做到的,我们也能做到。

另:最近系统不太稳定,IE经常异常当掉,已经打了很多字又不甘浪费,所以在提示IE要退出时抢着将前面录入的截了个图,请大家就着图片一起看,不好意思~~

[此贴子已经被作者于2007-8-4 13:16:01编辑过]

#16
hjj11232007-08-04 14:47
Graphics的BGI是怎么进图形库的?有人知道不?
#17
一笔苍穹2007-08-04 15:07
BGI是Borland的设备无关驱动啊,什么怎么进入图形库?看不明白
#18
ba_wang_mao2007-08-04 15:12
我希望首先把TC++弄熟再说,至少要在MSDOS下编写出非常漂亮的界面后,再谈论先把DX或者OP
#19
一笔苍穹2007-08-04 15:19

可TC也不是DOS下的唯一选择啊,更不是最佳的选择。DJGPP和Watcom不是更好吗。希望这篇文章对你有用:
http://bbs.bc-cn.net/viewthread.php?tid=160172

#20
starrysky2007-08-05 11:48
我现在还在华科,就要大四了。
12楼说的有理,过几天我去找几个简单的OpenGL例子来
#21
一笔苍穹2007-08-05 11:58
呵呵,我现在上班的地方离华科不远,也去过几次,学校满大的
#22
hjj11232007-08-05 12:09
以下是引用hjj1123在2007-8-4 14:47:54的发言:
Graphics的BGI是怎么进图形库的?有人知道不?

表达有误。我地意思很简单,就是弄个一模一样的BGI文件出来。

#23
一笔苍穹2007-08-06 08:57
我记得以前见过一种类似BGI maker的程序,不过现在已经找不到了。
#24
hjj11232007-08-06 11:56

找一下啊。拜托了。我很想看看它到底是怎么弄的兼容性那么好。要是有关于BGI生成原理之类的就好了。

#25
一笔苍穹2007-08-06 12:03
我前面不是讲过了因为BGI是VGA驱动所以才兼容性比较好吗,也讲过了只要会用,SVGA其实能做到一样兼容性好。只要我有时间并有兴趣,我可以写一个不基于BGI的并且兼容性和BGI一样好的图形库,毕竟VGA库要做到好的兼容性比起SVGA来说要容易很多。
#26
hjj11232007-08-06 12:07

VBE的兼容性呢?有多少主流的显卡厂商的产品支出VBE?如果我随便到市场上买块显卡它支持VBE的概率有多大?真是不好意思,我对显卡的标准一点都不了解。

#27
一笔苍穹2007-08-06 12:26
如果现在的个人电脑的话,可以说全部,我用过最老的TNT MX100都支持VBE 2.0
当然,像集成显卡或你现在用486那种工控板子的话可能就不一定。以前intel集成显卡特别是i845G板子,它不是不支持VBE,而是支持的不规范,也就是它有些功能接口没按标准文档里来,有自己的OEM接口,但这种板子大部分还是应该可以通过VBE里的显卡信息查询功能得到它的OEM接口,再而操作它,也就是说它的驱动会和别的稍有不同。但现在的INTEL集成显卡已经没这种问题了,我办公室用的的是945G的板,用NEO和Allegro都没问题。

反正你如果现在过电脑城,随便找一家买一块能买到的最老的显卡,我敢肯定它支持VBE,而且99.9%支持最新版也就是3.0版的VBE。
#28
hjj11232007-08-06 12:38
谢谢。
#29
鹏云翅2007-08-11 18:32

[转载]OpenGL是专业的3D API,DirectX则是个杂交品种,混合了许多东西在里面,我个人认为OpenGL
的地位是不可动摇的,它有很多优势,做游戏并不是OpenGL的目标,这和DirectX完全两回事,拿
OpenGL做游戏有点杀牛刀杀鸡的味道。而且OpenGL独立于平台移植性好,DirectX则不行,如果是做游戏,可以把OpenGL和DirectX结合起来,比如声音之类用DirectX,其实看看现在游戏
的效果也知道OpenGL的效果比DirectX好,不过OpenAL不也快出了么。至于选择那种API看需要了
OpenGL类似于高端专业工具,不是每个人都必须学会,应用面也窄。如果是做游戏,可以用
DirectX,毕竟是配合windows系统。至于OpenGL的效果,要是不会使用OpenGL扩展简直白学OpenGL了,国外网站上OpenGL的效果图多得很,找来看看就知道了。还有,3dsmax的渲染几乎就是直接使用OpenGL做的,不过我选择使用OpenGL驱动,显示速度倒不见得有多大提高。
BTW,我是OpenGL的坚决拥护者,而且正在用它做虚拟现实的东西。


DirectX Vs OpenGL
3D编程的第一个问题就是用何种API:OpenGL还是Direct3D?以下是它们的一些比较:
1 操作系统平台:
如果你的操作系统是Windows,你可以选择。如果是Unix、Linux等,那么就只能用OpenGL。

2 易学易用性:
OpenGL相对来说比DirectX易学,能够很快入门(这是公认的)。即使你将来可能要用到Direct3D,OpenGL仍然不失为一种好的3D编程的入门途径,OpenGL中原汁原味的3D函数简直和大多数计算机图形学教材中的伪代码一模一样。

3 文档支持:
在网上你可以找到很多很好的OpenGL的文档、教程、例程等,特别是“红宝书”(相关链接和文档可以在本站OpenGL栏目找到)。但是,DirectX SDK所提供的文档难嚼多了(公认),在网上你也难以找到好的教程(本站的DirectX栏目所提供的几乎是全部能找到的不重复的中文资料)。另外,书店里有不少OpenGL的中文书,而DirectX只有“希望”出的一种,并且不是讲Direct3D的。

4 关于COM:
DirectX是基于COM的,而OpenGL不是。如果你对COM不是那么感冒的话,最好先选择OpenGL。但是,如果你将一直在Windows平台上做3D编程的话,总应该熟悉Direct3D,因为Microsoft/SGI/HP共同开发中的一种新的3D接口是基于COM的,它将和Direct3D比较接近。

5 移植性:
DirectX与Windows紧密相连,难以移植。而OpenGL是一种非常“干净的”API,无论从VB语言到VC语言、还是从Windows平台到Linux平台(几乎一样的C代码)的移植都非常容易(并且在GLUT里提供了平台无关的窗口管理库)。

6 多媒体性能:
由于DirectX包括了DirectSound、DirectInput等,如果Direct3D和它们一起使用,将比较容易控制声音、操纵杆等,这是DirectX的整体优势。当然,没有人反对你同时使用OpenGL和DirectSound,Quake就是这样做的。

7 速度:
很难说哪个更快,QUAKE用的是OpenGL的引擎,而Unreal用的是Direct3D,它们都非常著名。其实,程序的速度并不在于你选择了OpenGL或DirectX,它还至少和两个因素有关:你写的代码的质量(依赖于你对你使用的接口的熟悉程度),硬件的支持(包括硬件的驱动程序的支持)。

8 强壮性:
这样说吧,OpenGL调用发生了错误,它什么都不做;而DirectX出了错,它什么都做得出……

[此贴子已经被作者于2007-8-11 20:02:50编辑过]

#30
neverTheSame2007-09-02 14:19

本人希望发展方向:研讨图形绘制算法,而不必用过多的时间去讨论具体的编译器。
比如:绘制一条直线,有那些算法,又有那算法的时间效率好,
我相信这才是编程的本质所在。

#31
RockCarry2007-09-07 10:11
DirectDraw 没有什么好学的,并且 DirectDraw 并没有提供给我们什么东西,仅仅提供了一种在 windows 平台下直接访问显存的一种手段,连基本的绘图函数都没有提供,仍然需要借助于 GDI 进行绘图。DirectDraw 环境下的 GDI 虽然说会快一点,但是许多情况下仍然不能满足需求。因此,在 DirectDraw 下,我们仍然需要直接访问显存,并且自己封装出一套图形库,这同 DOS 下的 SVGA 编程在本质上没有什么区别。因此,DirectDraw 应该被称作是 windows 平台上,微软对 VBE 的一种封装,因为 windows 下不能访问 VBE,因此微软就给出了 DirectDraw。

DirectDraw 所提供的功能真的很少,并且这些功能在 DOS 下通过 VBE 都能实现。然而,DirectDraw 的使用却是相当的繁琐,不如 VBE 的调用来的简洁。
#32
RockCarry2007-09-07 10:24
Borland 的 BGI 开发包我有,包括文档,参考代码和相关工具
使用这个开发包,你可以开发自己的 BGI 驱动
#33
一笔苍穹2007-09-07 10:36
以下是引用RockCarry在2007-9-7 10:11:45的发言:
DirectDraw 没有什么好学的,并且 DirectDraw 并没有提供给我们什么东西,仅仅提供了一种在 windows 平台下直接访问显存的一种手段,连基本的绘图函数都没有提供,仍然需要借助于 GDI 进行绘图。DirectDraw 环境下的 GDI 虽然说会快一点,但是许多情况下仍然不能满足需求。因此,在 DirectDraw 下,我们仍然需要直接访问显存,并且自己封装出一套图形库,这同 DOS 下的 SVGA 编程在本质上没有什么区别。因此,DirectDraw 应该被称作是 windows 平台上,微软对 VBE 的一种封装,因为 windows 下不能访问 VBE,因此微软就给出了 DirectDraw。

DirectDraw 所提供的功能真的很少,并且这些功能在 DOS 下通过 VBE 都能实现。然而,DirectDraw 的使用却是相当的繁琐,不如 VBE 的调用来的简洁。

这样说有点一棍子打死的感觉,其实VBE不是万能的,光DDRAW中提供的那些硬件加速特性VBE就难以全部做到,VBE是现在显卡的一套基本子集,各显卡厂商还有更多的高级或者说现代特性,这些高级特性的使用通过WINDOWS的硬件无关抽象层连接到显卡的驱动,显卡提供相应的能力的DDRAW直接调用,没提供的可以软件实现,2D这样,3D就更不用说了,显卡厂商制造的时候就得按照DX的需要来,提供D3D要的特性。DX可能的确是不适合直接用于工程,不过有大量的第三方封装引擎可以选用,可以避免与生涩的COM打交道。

#34
一笔苍穹2007-09-07 10:47
当然这也没有觉得VBE不行的意思,我个人对VBE也是很有感情的,负责任的说一句,只要代码架构设计的科学,细节优化的好,VBE足够编写任何2D游戏了!
就拿我以前做的NEO来说吧,架构谈不上好,优化的也很马虎,但效率已经够做普通游戏这个级别了。如果重新设计再重点优化的话(比如引入汇编优化关键位置等等),FPS还可以有较大的提升空间。何况NEO主要是针对16位的编译器的,光显存映射换页就是一个瓶颈了,如果在32位编译器下进行显存的平坦线性寻址,再加上32位的总线带宽的传输能力,性能翻番不成问题。
#35
RockCarry2007-09-07 12:37

我很难想到,除了能够直接访问显存之外,DirectDraw 还能为我们提供哪些硬件上的加速。事实证明,DirectDraw 下的 GDI 的确是慢速的,因此说,在几何图形的绘制上,DirectDraw 并没有提供硬件上的加速。

至于 DirectDraw 所提供的换页操作,在 VBE 中已经定义,并不是 DirectDraw 所独有。超大屏的 Surface 也是利用 VBE 来实现的。而离屏 Surface 等等,则不过是一些存放在内存或显存中的对象而已。

唯一可能存在硬件加速的,可能就是位块传送函数,但这种硬件加速,也仅限于显存内部的位块传送。主存到显存之间的位块传送操作,恐怕都需要 CPU 的介入,因为显卡作为一个图形处理器,能够直接访问主存的可能性不大,因此说主存和显存之间的 blt 很难有硬件上的加速。以目前的情况来看,CPU 对主存的访问要比对显存的访问快,因为主存技术发展很快,这包括存储芯片和总线技术的发展,并且 CPU 内部有 cache(显存是必须写穿的 Write-through,否则图像的显示就不正常,因此无法用到 cache)。因此,多数情况下,人们都更加喜欢使用主存。因此,在 2D 图形上,显存除了用于显示,换页,超大屏幕,已经没有更多的用途。而显存到显存的 blt,即便真的有加速,我想也很少会被人们用到。

应当承认的是,DirectDraw 是微软这样的大厂商所提出的,因此能够得到更多厂商的支持。标准化已经是发展的趋势,然而 DirectDraw 并不是一个真正意义上的标准,微软只给出了用户方面的接口,而没有更加公开的给出内部的细节,以及下层驱动的接口(其实 DDK 的 MSDN 已经给出),因此他不具备开放性。另一方面,DirectDraw 只能用于 windows 平台,有明显的局限性。因此说,VESA 所给出的 VBE,才是真正意义上的标准(仅指2D),具备开放性和跨平台性。在2d方面,就算有新的特性出来,我想也该是写入 VESA 的标准,而不是 DirectDraw,DirectDraw 只是 VBE 标准之上的一个软件层。

分析目前显卡的发展趋势可以发现,在 2D 方面已经很成熟,即直接可访问的显存,换页等,基本上不会再出现新特性。而在 3D 方面,真正意义上的标准还没有建立起来,OpenGL 和 Direct3D,都只是事实上的工业标准,随着 3D 技术的不断发展和完善,必然会建立起标准化的组织,来制定 3D 图形的标准。我希望通过这样的标准,我们可以直接访问显卡的3D图形控制器,这样可以使3d功能应用于更加广泛的 PC 机操作系统平台,而不仅仅局限于 windows 和 linux。或者说通过这个标准,来建起一个与操作系统无关的 3D 图形功能的调用层(类似于 VBE),来满足不同系统对 3D 功能的需求。

#36
RockCarry2007-09-07 12:43
当然标准化上会存在许多利益冲突,微软当然不愿意看到其它平台上也出现高性能的 3D 图形系统,而一些硬件厂商也不愿意公开自己技术细节。也就是为什么我们在 3D 上只能看到 D3D 和 OpenGL 的原因。路是漫长的。
#37
一笔苍穹2007-09-07 13:33

我并未否认VBE,毕竟大多的2D特性是建立在VBE上的,但硬件Blit和ColorKey也是有用的,DDRAW虽然没直接提供几何绘制接口,用GDI当然可以,但效率过低,直接LOCK表面再写显存当然也可以,但比起反复的加锁和解锁来说,硬件位块传送就显得有用了,画点函数可以这样做:建立一个支持硬件位块传送的surface,大小为1X1,即一个像素,往目标表面指定位置直接Blit。如果觉得这个比显存直写来的快不了多少的话,水平线和垂直线可能更能运用这个硬件加速特性。对支持硬件加速的Colorkey位块传输在下更是垂涎已久。我赞成2D图形处理不会也不必增加更多的特性,VBE本身提供的说出来也就主要也就两种而已——显存直访、显存首址重定向(其应用可衍生出换页和大虚拟屏幕等),就这些了,已经满足2D处理的应用了。如下图:

DDRAW
______________|______________
| |
VBE 厂商特性
(显存直访、首址重定向等) (硬Blit等)

实在不算多,说DDRAW没多提供什么,那VBE本身又提供了多少呢?2D嘛,不是要多,而是要有用,VBE提供的都是极有用的,而从基本几何绘图到位图传输,有了那个厂商特性就如虎添翼。我眼巴巴的等着这个特性入标准呢……

我不认为显存用的频率一定会比主存少,也不认为主存和CPU的发展比显存及GPU快,当个人电脑还在用DDR2内在的时候显存颗粒已经是DDR3甚至DDR4了,而且容量越来越大——128M的普通的不能再普通,512M以上的都比比皆是;GPU的制程也直逼CPU,而且它要做的事只是处理图形而已(现在一些思路提出的利用GPU上的浮点运算单元协助处理CPU事务,利用GPU过剩的处理能力)。

写到最后,发现不是我们的观点不同,而是都对VBE有更高有寄望而已。

#38
RockCarry2007-09-07 14:28
VBE 和 DirectDraw 所扮演的角色不一样,VBE 是硬件接口的标准,需要尽量反映硬件特性,因此说,VBE 所提供的是多数显卡所具备的。而 DirectDraw 作为一个操作系统的图形层,我更希望它能提供给我们更多的图形函数。然而目前的 DirectDraw 似乎也仅仅是对 VBE 的封装而已,图形函数都没有实现,还需要借助 GDI,或者由用户自己访问显存,这多少有点让人失望。因此我说,DirectDraw 没有什么好学的,他也没有提供给我们什么。在 DirectDraw 之上,我们还需要做更多的工作。

另外 VBE Core 中是不会定义更多的功能的(包括绘图等),而在 VBE Core 之上有 VBE AF,不知道 DirectDraw 是否是建立在 VBE AF 之上。如果是这样,那么 DirectDraw 所提供的功能真的是太少了。
#39
RockCarry2007-09-07 14:40

我还是那个看法,DirectDraw 其实就是 windows 下的 VBE,除此之外他并没有提供更多的功能。连一个图形库都谈不上
不过新版的 DirectX 中 DirectDraw 已经被 DirectGraphics 所取代。

#40
RockCarry2007-09-07 14:54
微软自己也发现,DirectDraw 提供的功能实在是太弱,因此新板DX中,DD已经没有资格成为DX中的一个独立功能模块了,取而代之的是 DirectGraphics.
#41
一笔苍穹2007-09-07 17:53
以下是引用RockCarry在2007-9-7 14:28:54的发言:

另外 VBE Core 中是不会定义更多的功能的(包括绘图等),而在 VBE Core 之上有 VBE AF,不知道 DirectDraw 是否是建立在 VBE AF 之上。如果是这样,那么 DirectDraw 所提供的功能真的是太少了。

裸DX用起来是不顺手。
至于VBE AF,好像各显卡厂商的支持都不得力,而且连FreeAF项目也早已停止了,这不得不说是个遗憾。

#42
一笔苍穹2007-09-07 17:55
以下是引用RockCarry在2007-9-7 14:40:45的发言:

我还是那个看法,DirectDraw 其实就是 windows 下的 VBE,除此之外他并没有提供更多的功能。连一个图形库都谈不上
不过新版的 DirectX 中 DirectDraw 已经被 DirectGraphics 所取代。

恩,就像FrameBuffer就为LINUX提供VBE接口一样。这是必要的,如果系统不提供这样的底层接口,那形形色色的图形库有从何而来呢。

#43
BlueGuy2018-06-07 13:08
学习OpenGL最好同时学习一个游戏引擎,推荐unity,另外推荐3本书:《OpenGL编程指南》第6版、《OpenGL编程指南》第9版、《unity5.x从入门到精通》。
第6版和第9版是完本不一样的书,第6版主要是从固定功能渲染管线角度介绍OpenGL的, 第9版完全是从shader角度介绍OpenGL的,我觉得第9版理解起来有一定难度。
我是先看的《unity3.x游戏开发经典教程》,也是一本不错的unity教程。

[此贴子已经被作者于2018-6-7 13:19编辑过]

1