标题:[求助]怎么获取64K色图形模式下的某点颜色值
只看楼主
RockCarry
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:13
帖 子:662
专家分:58
注 册:2005-8-5
得分:0 
TC2.0中是将一个long型的返回值放在了dx和ax寄存器中,TC3.0中不知道是不是,我没有测试,因为没有TC3.0的编译器。
如果是的话,那个方法就不成立了,就只能color = _EAX。
2006-09-08 15:53
RockCarry
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:13
帖 子:662
专家分:58
注 册:2005-8-5
得分:0 

第三方BGI的种类很多,使用前都要认真阅读供应商的参考文档。不过现在这个已经不流行了,找不到资料也是自然。看国内流行的第三方BGI好像都是Jordan Hargraphix Software的,其实在国外还能找到很多,性能都很不错。
一般情况下使用了BGI,就最好使用其提供的接口函数,比如取像素颜色,而不要自己去直接访问显存,这样多少有点不规范。至于RGB分量的量化压缩的问题,理解了是很好的,这个思想可以运用到256色模式下的,自己去想吧。

[此贴子已经被作者于2006-9-8 16:07:32编辑过]

2006-09-08 16:05
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
得分:0 

太感动了!!!
2006-09-08 16:28
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
得分:0 
呵呵,感谢RockCarry的及时出现,这下就印证在getpixel()之后读取寄存器_AX值是没错的了,希望cdmalcl的作品及早问世,记得发一份上来哦~
2006-09-08 16:49
RockCarry
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:13
帖 子:662
专家分:58
注 册:2005-8-5
得分:0 

TC3.0没有TC2.0好用,他没有能很好的支持32位DOS程序,不能使用大内存,仅仅是提供了对部分32bit指令和寄存器的支持,所以显得有点不伦不类。对于写16bit的DOS程序,推荐使用TC2.0,如果要想使用32bit的DOS编译器,推荐使用Djgpp。

不过Djgpp的入门可能要难一点,国内很少有人用,光是安装就要花去很多时间去研究,因为国内找不到资料。当时我就是搞了很久才把安装搞定。国内以前曾经流行过一个Djgpp的版本,是在Crazy Bugs(现在已经死了:-)上提供的,不过那个版本显得有点问题,几乎不能痛快地使用。可以自己去官方网站下载,然后尝试这安装,其实安装说明在网站上讲的很清楚了,要认真阅读。我当时就是没有认真阅读,浪费了一天多时间去研究。

2006-09-08 16:52
RockCarry
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:13
帖 子:662
专家分:58
注 册:2005-8-5
得分:0 

对于初学者,可以尝试使用RHIDE,其界面都和TC差不多,对于Linux老手来说,RHIDE就显得有点垃圾了。一般的项目管理方法都是使用MakeFile工具来进行,非常方便,真是得心应手。我现在使用TC2.0编译器也不用IDE和WinTC的IDE了,都是使用Make工具,极为方便。

如果想使用Djgpp编译Allegro还需要注意一些问题,就是GCC新版本的编译器对Allegro中的一些语法有点不支持,所以要下载比较老版本的Djgpp编译器来编译(新版本不一定就好哦:-)。

2006-09-08 16:52
RockCarry
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:13
帖 子:662
专家分:58
注 册:2005-8-5
得分:0 
通常情况下,很多人都很难理解16位DOS程序与32位DOS程序的区别,也就是实模式和保护模式的区别。其实实模式和保护模式最大的区别不是别的,而是寻址方式。
还有就是对编译器的理解,也是值得去研究的。理解编译、汇编、函数调用机理、什么是目标文件、什么是链接、什么是库文件。打通编译器这一层,你会觉得世界是如此的光明,世界又是如此的简单。正是因为编译器为我们做了太多的事情,使得我们不能深刻理解计算机了。
2006-09-08 17:09
RockCarry
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:13
帖 子:662
专家分:58
注 册:2005-8-5
得分:0 
要理解这些,也不是一两天能完成的。对于写应用程序来说,事情就相对简单,只需要理解自己的平台,工具,然后注重程序模块、逻辑和算法据可以了。
整个计算机世界都是层级形式的,正是这种形式使得我们可以在不同的层级上并行开发,而每一个层级的开发都不用去理解整个计算机世界,而只需要理解他的平台就可以了,也就是要理解其下一层提供的工具和调用接口。这种形式是优美的,最鲜明的例子就是网络协议栈的实现过程,清晰而生动。
不管你是做什么的,努力吧,继续!
RockCarry

[此贴子已经被作者于2006-9-8 17:10:56编辑过]

2006-09-08 17:09
RockCarry
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:13
帖 子:662
专家分:58
注 册:2005-8-5
得分:0 
模块之间的依赖关系应该是一个单向的依赖关系,就是说是一个无环有向图。正是这样的依赖关系形成了计算机世界的层级形式,也正是这样优美的形式奠定了计算机世界层级关系的基础。每一层级都要完成自己的事情,也无所谓难与易,最关键的还是对平台的理解,不理解平台会导致做无用功,曾经就有人在使用C语言编写应用程序的过程中,为了处理字符串去编写字符串处理函数,这是愚蠢的。首先要搞清楚自己的开发所处的层级,所使用的平台,需要深刻理解平台。使用C做应用开发,在C标准库中就提供了字符串处理的函数。理解平台的目的就是最大的使用平台所提供的功能,而不是自己去重新构建。
2006-09-08 17:46
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
得分:0 
以下是引用一笔苍穹在2006-9-8 16:49:37的发言:
呵呵,感谢RockCarry的及时出现,这下就印证在getpixel()之后读取寄存器_AX值是没错的了,希望cdmalcl的作品及早问世,记得发一份上来哦~

一定一定
绝对不副众望

2006-09-08 17:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-80920-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.145549 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved