ALLGRO图形开发库的学习研究.1

ALLGRO图形开发库的学习研究.1

作者:vrix.ipona



!!本人最近在汉化ALLEGRO4.14的函数手册,希望大家踊跃参加此项工作。〈ALLEGRO中文函数手册-VriX版(未完成)〉

注意事项:
[1]ALLEGRO‘S HOMEPAGE+^_^+ALLEGRO.CC
[2]关于ALLEGRO 3.11的函数,风云作过对原始文档的汉化,详情请到--〉风云主页之ALLGRO
[3]ALLGRO 4.14版的函数说明文档-ENGLISH版本,请到--〉 English online documentation
[4]对ALLEGRO的学习是刚刚起步,希望有兴趣的网友可以与我共同开始对它的学习。在切磋中进步。
[5]大量的网友都为ALLEGRO做过升级或是类似的事,我将与他们取得联系,把他们的作品奉上。请关注。
[6]要用好ALLEGRO就得先用好DJGPP||BCC......,而对于它们+ALLEGRO的学习也将在这里提出相关的内容。
[7]这里将逐渐成为对ALLEGRO做全面报道的中文站点,除非我发生意外,不然的话,请关注这里的发展,谢谢。

   我看过最新的ALLEGRO的English online documentation的一部分之后发现很多新的功能,同时发现,不是每一个函数都会用到,关于我下一步要做的GANIK,我暂时只针对要用到的图形函数做适当的例程和解释,风云对ALLEGRO的翻译停留在3.11版本,实在是遗憾,不过仍然要谢谢这位游戏界满出名的人物,我其实在2001年初就发现他对ALLEGRO的工作,由于那时不打算搞,也只是佩服他之后,没做任何事的过到现在(在搞16色的东东,由于有资料,所以觉得上手容易),看来ALLEGRO的发展已经使BCC可以编译它,那么为什么要用DJGPP做呢,一是BCC有功能强大的开发环境,虽然是文本的(对DOS而言),但用习惯了的家伙们,总是不愿意换个东东,而我呢,对图形开发比较感兴趣,恰巧DJGPP又没有集成开发环境FOR DOS,我打算发起这么个计划,其实并不一定能独立完成,希望对DJGPP有经验的朋友多支持我,我也能在此同时对ALLEGRO做最深入的了解,将来即使用了BCB,ALLEGRO也可以跟着过去闯一闯。不了解ALLEGRO的人其实很多呀,我希望通过我这里对他的学习达到推广的目的。
   以下是ALLEGRO支持的平台和编译器:
   DOS/djgpp - see docs/build/djgpp.txt
    DOS/Watcom - see docs/build/watcom.txt
    Windows/MSVC - see docs/build/msvc.txt
    Windows/MinGW32 - see docs/build/mingw32.txt
    Windows/Cygwin - see docs/build/mingw32.txt
    Windows/Borland - see docs/build/bcc32.txt
    Linux (console) - see docs/build/linux.txt
    Unix (X) - see docs/build/unix.txt
    BeOS - see docs/build/beos.txt
    QNX - see docs/build/qnx.txt
    MacOS/MPW - see docs/build/macos.txt
    Darwin/MacOS X - see docs/build/darwin.txt

     其实说这么多都是白费,我们现在要做的是一个DOS下的东东,只不过是小小的应用一下这个完美的库而已,它是前途光明的,所以我在这里提出对他的学习,否则要一个过时的库做软件,没有未来的东西,谁会关心呢,DOS下它的应用只是个开始,以后要不断到WINDOWS,更或是其他系统,如此说法,不知道看到这里的网友是不是开始有了兴趣呢???
    给DJGPP做东西有个难点,遍查YAHOO,SOHU发现没有一个连接是可用的,也就是说,你下载不到DJGPP,我的网站连接的是吴进提供的djgpp,版本自然不是最新的,为了用最新的DJGPP,我们该怎么办呢??(如果不在乎最新不最新,我网站上连接的就可以满足暂时的需要)我的做法是,下载DEVCPP,他不仅提供了GCC(也就是DJGPP的编译器),还有G++这个配套的C++编译器,学C或是C++,都可以得到满足,而且DEVCPP和比VC支持的东西少不了多少,所以它是得到最新工具的第一选择,不知道诸位对我的想法有何异议呀???
    搞定了编译器,再来说GCC的参数问题:
用法: GCC.EXE [选项] 文件...
Options:
--help 显示此信息
(Use '-v --help' to display command line options of sub-processes)
-dumpspecs Display all of the built in spec strings
-dumpversion 显示编译器的版本信息
-dumpmachine 显示编译器的目标处理器
-print-search-dirs 显示编译器可查找的目录
-print-libgcc-file-name Display the name of the compiler's companion library
-print-file-name=〈lib〉 显示库所在的绝对路径〈lib〉
-print-prog-name=〈prog〉 Display the full path to compiler component 〈prog〉
-print-multi-directory Display the root directory for versions of libgcc
-print-multi-lib Display the mapping between command line options and
multiple library search directories
-Wa,〈options〉 Pass comma-separated 〈options〉 on to the assembler
-Wp,〈options〉 Pass comma-separated 〈options〉 on to the preprocessor
-Wl,〈options〉 Pass comma-separated 〈options〉 on to the linker
-Xlinker 〈arg〉 Pass 〈arg〉 on to the linker
-save-temps Do not delete intermediate files
-pipe Use pipes rather than intermediate files
-specs=〈file〉 Override builtin specs with the contents of 〈file〉
-std=〈standard〉 Assume that the input sources are for 〈standard〉
-B 〈directory〉 Add 〈directory> to the compiler's search paths
-b 〈machine〉 Run gcc for target 〈machine〉, if installed
-V 〈version〉 Run gcc version number 〈version〉, if installed
-v Display the programs invoked by the compiler
-E Preprocess only; do not compile, assemble or link
-S 编译; 不汇编,也不连接
-c 编译和汇编, 但不连接
-o 〈file〉 输出到文件 〈file〉
-x 〈language〉 Specify the language of the following input files
Permissable languages include: c c++ assembler none
'none' means revert to the default behaviour of
guessing the language based on the file's extension
Options starting with -g, -f, -m, -O or -W are automatically passed on to
the various sub-processes invoked by GCC.EXE. In order to pass other options
on to these processes the -W〈letter〉 options must be used.
For bug reporting instructions, please see:
〈URL:http://www.gnu.org/software/gcc/faq.html#bugreport〉.
     djgpp的FTP站点,提供最新版本下载
通过上面这个连接也可以得到最新的DJGPP,然后编译ALLGRO的代码得到.a结尾的库。如此只好,你可以使用ALLEGRO这个完美的东东,现在我们由于是初学,所以吴进提供的DJGPP的精简版可以满足需要,除了版本低,其他没什么。
    吴进的BMPview被我改了放在这里
    以上只是我今天做的一部分,其实在做它之后,我把我原来程序当中用到的BAR_9X();BAR_2K();BAR_LINUX();等10多个函数重写了放在GANIK里,但是发现BMP图调用时一但PALLETE被修改,出现的效果将与我想的不一样,为了更好的应用这些函数我打算暂不公开代码,一面丢人,不过看过我RIPPLE的朋友该知道如何实现他们,好了,今天就做这么多。(2002.10.30)
    上面的部分有漏洞呀,我提到DJGPP没集成开发环境是指没有图形化的开发环境,而不是RHIDE那个文本的,对于ALLEGRO的字符显示,鼠标调用做了研究,已经能够应用到软件当中,至于要做的吗,其实是对ALLEGRO所调用的不同色深做最全面的了解,也就是掌握它调用不同色深图形模式的函数,起码知道要找的颜色大概在哪里。我暂时用的PALLETE是随BMP调用的,在做自己的256色PALLETE,不过用16位色深更好,不过色彩太多,其实用起来到不见得爽了,不能象16色一样有英文名做标记,6万种色,定义6万个单词可不是好记的,要托福以上的水平呀,不说废话,今天做的还是对BMPVIEW的加工。
    void set_color_depth(int depth);
设置点的格式来由随后调用 set_gfx_mode() 和 create_bitmap() 时使用. 有效的颜色深度有 8 (缺省值), 15, 16, 24, 和 32 位.
    int set_gfx_mode(int card, int w, int h, int v_w, int v_h);
切换图形模式. 参数 card 必须是以下值中的一个:
GFX_TEXT - 返回文本模式
GFX_AUTODETECT - 让 Allegro 选择一个合适的图形驱动程序
GFX_VGA - 选择 VGA 模式 13h (320x200 或 320x100)
GFX_MODEX - 选择平面扭转的(plannar tweaked) VGA 模式
GFX_VESA1 - 使用 VESA 1.x 驱动程序
GFX_VESA2B - 使用 VBE 2.0 分页模式驱动程序
GFX_VESA2L - 使用 VBE 2.0 线形页面缓冲驱动程序
GFX_VESA3 - 使用 VBE 3.0 驱动程序
GFX_VBEAF - 使用 VBE/AF 加速器 API (未完成)
GFX_XTENDED - 使用断链式(unchained) 640x400 模式驱动程序
我现在用的是
set_gfx_mode(GFX_VESA1, 800, 600, 0, 0);//800,600是分辨率
set_color_depth(8);
参数 v_w 和 v_h(也就是那两个0所在的位置) 指定了最小虚拟屏幕的大小, 因为你需要一个大的虚拟屏幕来做硬件滚屏或多页面切换. 如果你不在乎虚拟屏幕的大小就应该将它们设为零. 虚拟屏幕回造成许多混乱, 但是它们真的 很简单.(详情请见风云对ALLEGRO 3.11函数说明书的翻译)
以上是对风云翻译的引用,如果不是很懂,请使用与我一样的培植,然后可以使用800X600,256色的功能,不过对PALLETE的设置将在以后的部分详述。
void set_palette(PALETTE p);
设置整个调色板的 256 种颜色. 你应提供 256 个 RGB 结构的数组.
所有的 Allegro 绘图函数使用整数参数来代表颜色. 在真彩分辨率下这些数字以红,绿,蓝的联合位来直接描述色彩, 但是在常规的 256 色模式下这些值被看作是当前调色板的一个索引号, 这个调色板是描述 256 种可能的色彩中每一个颜色的红,绿,蓝的强度值的一个列表. 调色板被储存在一个 RGB 结构里, 它包含了以 VGA 硬件格式描述的红,绿,蓝的强度值,每一范围是 0-63. 这个结构是这样定义的:
typedef struct RGB
{
unsigned char r, g, b;
} RGB;
例如:
RGB black = { 0, 0, 0 };
RGB white = { 63, 63, 63 };
RGB green = { 0, 63, 0 };
RGB grey = { 32, 32, 32 };
类型 PALETTE 被定义成 256 RGB 结构的数组
对与没一个与调色板有关的函数都是要掌握的,虽然现在不能都用到,但要实现一个复杂的程序,它是必须的,尤其是你要调用用其他软件做的BMP图时,你的调色板会被重新设置,(用BMPVIEW2可以看到每个256色BMP图的调色板)要重新使用你原来的调色板,就得调用喽,慢慢来吧,我是搞定8成关于PALLETE的函数和变量了,就等应用啦,朋友们加把劲儿呀。我可要开始用ALLEGRO做软件啦,才两个通宵,搞成这样已经不错了,我一出网吧,所有关于ALLEGRO的东西都留在网上,希望有机器的朋友珍惜机会呀,不要落后呦!*^_^*(11.03.2002 0:19)

  作者:vrix.ipona

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值