Allegro.cc - Online Community

Allegro.cc Forums » Allegro Development » Allegro 5.0 (or 6?) - Request For Comments

This thread is locked; no one can reply to it. rss feed Print
Allegro 5.0 (or 6?) - Request For Comments
nempko
Member #1,253
April 2001

and yes, i care what the internals are Allegro because they are reflected in the API. And in fact i would love to be a developer of Allegro, for free that is.

kns
Member #1,707
December 2001

This note is not intended to push support in any direction. It's simply a documention of how the DOS port is relevant to some...

For me, DOS Allegro provides the means to collect reaction time data without the worries of the added variability introduced by Win(whatever#). I suspect that there are dozens to hundreds of psychology labs using Allegro for this very reason. Though I'm not in need of additional features it would be comforting to know that some development - code improvement - will always be considered. DOS has it's place for those with specific needs.

Whatever happens I have been thankful for Allegro and the help that I have received from the community...

KNS

[ December 06, 2001: Message edited by: kns ]

Bob
Free Market Evangelist
September 2000
avatar

quote:Well, you are quite wrong bob. He had said if he would recreate C++, he would not use the illogical C syntax. He kept it so many people can migrate much easier to it. It is a Better C and i find it funny that people refuse to learn it out of sheer pride for C. C was his biggest design mistake
1. Link please.
2. Your argument is flawed, sorry.
If you had to redesign English, would you keep its germanic roots, or would you switch to Latin, or something else?
If you had to redesign life, would you do it without bacteria? Or use the illogical parasitic life-forms?

The internals of Allegro don't reflect the API - that's why they're called Internals. Notice how the internals have gone from straight function calls to VTables and more in between 3.11 and 4.0-beta, without any changes to the API? (except of course for the added functionality)

--
- Bob
[ -- All my signature links are 404 -- ]

nempko
Member #1,253
April 2001

you are right bob, many of the internals are not reflected, yet many are also, such as global variables.
maybe what i said about C as being the major design mistake may be too much, i was stressing my emotion.
these are good links... with good points. I believe allegro could benifit greatly from C++ as a tool. people should not regect it, and stop saying c++ is slower.(not you bob, people in general)
http://www.itworld.com/AppDev/710/lw-02-stroustrup/
http://www.research.att.com/~bs/devXinterview.html

and of course
http://www.research.att.com/~bs/homepage.html

Plucky
Member #1,346
May 2001
avatar

Despite reading these forums since this website's inception, I have rarely posted a message. After reading these threads on Allegro's future, I've decided to be brave and wade in. I'm known to be longwinded however and perhaps that is why I rarely post.

I'll throw in my 2 cents on the topic of DOS support and its spawned topic of C vs. C++. I'll start with C/C++ in this post since it's easier for me, and I'll continue with DOS support in my second post.

From my two full decades of hacking around on PCs (it all started as a kid when my Dad brought home the original IBM PC from his job at IBM), the argument over the superiority of C or C++ for over the other for games programming is a moot one. They both work well. Even BASIC will work well. For a given processor and operating system, their speed will be the same if each have the most efficient compiler possible for their respective langauges. After all, the compilers all translate the languages to the same machine code. However I can perceive practical differences among the languages, because each language is structured differently.

For example, I perceive C to have certain "advantages" over BASIC. C language is formed to better support structured programming and easier hardware (memory) access. No more gotos and pokes and peeks that can drive people crazy. However I emphasize that there's no reason a BASIC programmer cannot program in a structured fashion or not access memory directly. There are simply more sophisticated tools in the C language.

Now we can extend this example to C and C++. C++ is formed to better support object-oriented programming. But you can still program objects in C; it is perhaps more unwieldy for certain OOP elements. (I admit that my status as a C++ programmer is 'dabbler', and most of my programming these days are in C.) On the flip side, a C++ programmer can ignore much of the OOP elements.

For Allegro, no one is suggesting that it be written in BASIC. Memory access would be a nightmare, and it suffers from portability problems. Allegro is currently written in C (and asm). And we all agree that it works with C, and it is adequately portable. Some propose that Allegro be rewritten in C++ (and asm). I consider C++ to effectively be a different language. But C++ is a superset to C, you say. My point exactly. A C compiler would read C++ code as gobbley-gook. In order to switch to another language, there must be very good reasons for doing so. In my mind, the switch to C++ would require a great benefit: Allegro would be improved much to the same magnitude as a switch from BASIC to C. And because C++ can compile C, this hurdle should be even greater. I have yet to see an argument for C++ for Allegro that satisfies me. To me, Allegro does not require heavy OOP elements where C++ would suddenly make everything better (or faster).

There are plenty of C++ graphics libraries out there. C++ programmers can use Allegro directly because C++ can compile C. C programmers cannot use C++ libraries directly. For the C++ community, I would support that community's effort to write their own version of Allegro: Allegro++.

[continued...]

Plucky

Plucky
Member #1,346
May 2001
avatar

[post continued...]

As background, the loss of DOS support would not affect me personally, because I've moved over to MingW.

I've interpreted the statements by the core Allegro developers as: we plan to streamline and update Allegro for Windows (and presumedly Linux.) A secondary statement I interpreted was: we will not have the bandwith to do the same for DOS.

What I also heard: If you want an Allegro update for DOS that is compatible with the proposed Allegro update, then form a band of developers to make it happen. It is your job to make all the calls compatible with the Windows Allegro update, ostensibly ver. 5.0.

I have yet to hear (or don't remember) any significant reason to not go ahead with a Windows-(and Linux too?)-only update of Allegro because I have yet to hear any evidence that a separate DOS update cannot be compatible with the original proposed Allegro 5.0 update. That is, DOS "after-market" support or something similar seems to be still possible with the planned update of Allegro 5.0.

I found interesting the point about how DOS allows support for accurate timestamping of inputs in measurement systems and so forth. I've had expereience with the difficulty of an OS like NT to timestamp an event when the OS polls the input in a random manner due to its ability to run multiple programs (more) properly. And though this point was raised to garner favor for DOS support, I think it also shows a window into why Allegro core developers feel that to improve Allegro they would not support DOS directly. An operating system such as Windows NT/2000/XP and Linux are different than DOS in how they allow programs to access hardware (for games, namely video memory, video cards, and keyboards). This is manifested in the timestamping problem above. The ability to run multiple programs properly is a big reason why an OS like NT or Linux allows access to hardware much differently than DOS. For someone looking outside-in, this seems to be a big driver for change since the vast majority of people out there will use one of these "modern" operaturing system.

Again, similar to what I said in my C vs. C++ post above, DOS can be made to run multiple programs, though not always running at the same time. An example program that allows DOS to do this is called Windows 3.1. And with some clever tweaks, you get Windows 95. I wonder why these two programs always crashes? ;)

One more point. For those Allegro programmers that don't need DOS to support specific DOS features (e.g. its inability to run multiple programs properly), perhaps Allegro in DOS is easier to program than Allegro in Windows. For such programmers I'll suggest that perhaps if Allegro was updated for Windows, it would be easier to program Allegro for Windows than for DOS.

Plucky

Neil Walker
Member #210
April 2000
avatar

I never thought about classifying myself (NT4) as using out-of-date OS that is hampering Allegro development like DOS is. So why not, either:

a) let us out of date OS's stick to 4 and sacrifice ourselves for the good of Allegro version 5. If the changes really add value then upgrade (I can't because I develop on my works computer who aren't migrating to newer Windows until a long time).

b) If its just the upgraded whizzy drawing stuff in DX thats required, why not just use/incorporate OpenGL for graphics and limit DX for the others (e.g. DInput) using DX? If its good enough for RTCW then its good enough for me ;-)

If its support for joysticks, etc in DX7 that is required, why not do what someone else said and modularise stuff so that different versions can be easily supported.

Neil.
MAME Cabinet Blog / AXL LIBRARY (a games framework) / AXL Documentation and Tutorial

wii:0356-1384-6687-2022, kart:3308-4806-6002. XBOX:chucklepie

Jonathan Metzgar
Member #245
April 2000

Ok, I would like to input some input. As I understand from current Allegro development, Allegro 4 is the end of the line for the current API structure. Because of this, I would like to offer some suggestions for what Allegro 5 should be like.
First off, DOS support should be dropped now. The limitations of DOS have clearly been seen. 4 years to develop a new release for the library is ridiculous. If future DOS support is desired, then perhaps supporting versions like 4.1, 4.2, etc. can be utilized to appease those individuals.
As for Allegro 5, it definately needs a complete API overchange. The idea of using a prefix (al_...) is a terrific idea and should be used. I would not support the idea of just implementing OpenGL or DirectX into the main functionality of Allegro is a bad idea. This would possibly alienate people who prefer other API's. It would be a good idea to support a video mode that supports them. I.e. GFX_OPENGL and GFX_DIRECTX. It is not a good idea to write "wrappers" for them. The reason for this is because writing wrappers reduces efficiency.
void foo () {
...do something
}
void foo_wrapper () {
foo ();
}
This kind of programming will not keep up with the technology these environments will evolve into. As an example, DirectX 8 is not backwards compatible with previous versions so providing native DirectX support isn't good.
Now, architecturally, it would be nice if an internal state table was maintained much like OpenGL whereby you would call a function like al_Set () or al_Get () to set and return parameters like current sound status, error messages, etc.
Reducing the number of functions is definately needed. Currently there are many functions to facilitate the loading of images (load_pcx, load_bmp, load_tga, etc.) Instead, why not kill those functions and just keep load_bitmap/save_bitmap/register_bitmap_loader style functions?
Reducing the support of drivers for video and sound would be feasible too. If Allegro 5 doesn't support DOS, then we really can drop Mode-X support. Mode-X by itself is mess to deal with and would certainly remove a lot of code. Supporting alternate drivers like the AUTODETECT drivers with the addition of features bits, we could achieve code like this:
int main () {
... Initial Driver Indicates we would like these features
alSetGfxMode (GFX_AUTODETECT | GFX_OPENGL | GFX_DIRECTX | GFX_DOUBLE_BUFFER);
al
}
Another idea is to have double-buffering support a graphics feature rather than software. Looking to the future, we could
have the graphics driver support double buffering.
We need to ensure basic functionality works on all platforms. OpenGL is a great example of this. We may have different ways of opening an OpenGL window, but after that using the functions work without dependency of external hardware differences. So separating how we initalize sound, video, and other platform specific features and how we put pixels or draw sprites could be an advantage because drivers that support specific hardware features could be written. A Driver module so to speak. This is how modern libraries such as OpenGL and DirectX work anyway.
This brings up another good design point. What if we start with a specification and then write a base library completely utilizing software that is platform independent? After that, we could write drivers that are designed to work with OpenGL or DirectX, or whatever platform we choose.
And what about adding XML file support, Threading, etc?
Anyway, just some points to consider.
Questions? e-mail me at microwerx@yahoo.com web page

Fladimir da Gorf
Member #1,565
October 2001
avatar

Talking about DOS... I can't run dos games made by someone else for some reason. I always get SIGSEV thingy memory problems. And I've got Win98 with a real dos! Uurght I can't even think how those poor ppl who have win2000 could be able to run them. :o

OpenLayer has reached a random SVN version number ;) | Online manual | Installation video!| MSVC projects now possible with cmake | Now alvailable as a Dev-C++ Devpack! (Thanks to Kotori)

Jonathan Metzgar
Member #245
April 2000

You can't run or even develop DOS games with DJGPP with Windows 2000. I don't think XP is capable of the same thing. Even if you could, support is extremely limited. If I need to develop a "DOS" application, I simply write a Win32 console application with MSVC. And really, if you need to develop DOS style games, just switch over to Linux (It's free!). It provides a console mode style operating system with much better features and Allegro will run on it. DOS is really a terrible operating system (and very old I might add) and will always remain so.

Bob
Free Market Evangelist
September 2000
avatar

jonathan the master coder: Wrappers don't have that much of an effect on performance, unless you use putpixel() a lot. The added overhead will be less than 1% for 99% of the time, since most likely you will do multiple function calls to acheive whatever operation you were trying to do anyway.
ModeX is still present in Windows and Linux. Dropping it will affect low resolutions there.
The al_set/al_get thing was already discussed, and we agreed against it (see the first post + link).
XML support is not needed - there's no point in putting directly in the lib, since it doesn't rely on anything which may even remotely be platform dependant.
Threading is a large thing to implement (although it would be nice). We don't have to thread-protect everything - we can just make it clear that only ONE thread uses the graphics, only ONE thread uses sound, etc. With a system like this, we don't need to protect every function (at great expense on performence).

(edit: s/independent/dependent/)
[ December 13, 2001: Message edited by: Bob ]

--
- Bob
[ -- All my signature links are 404 -- ]

Jonathan Metzgar
Member #245
April 2000

For threading support, I wasn't suggesting that Allegro be threaded so to speak. But since we have the timer routines, etc. We could write a simplified version for developers to use threads in their applications.

Inphernic
Member #1,111
March 2001

A selfish, n00b perspective! :)

Why DOS should stay:

I don't have mad C skills + even less knowledge about the insides of Windows = The only platform available for me is DOS.

Why DOS shouldn't stay:

I don't have mad C skills + even less knowledge about the insides of Windows = I finally have to face my inner fears and start studying Windows programming..

Conclusion -

Kill the DOS so I'm forced to learn Windows programming. Otherwise, I'm too lazy to depart from DOS.. :)

It's like a forest fire.. To create you need to destroy. Or something. :D

Richard RPG Concept
Member #473
June 2000

well with allegro by using on MSVC.. you can do the coding the same in dos mode... with allegro, it made everything so SUPER-EASIER for window programmers. :)

please correct me if you find my reason mistaklable of in allegro 4.0 differ than my own expernices. Cuz i have not updated my allegro 3.9 to 4.0 :)

Jonathan Metzgar
Member #245
April 2000

Well, if you don't want to face Windows Programming (which really isn't that bad once you get the hang of it), the use Linux. Linux is extremely easy to program for.

Remember to expand your horizons and leave the past behind. - Me ::)

Connelly Barnes
Member #1,329
May 2001

Ideas:
I would prefer alMixedCaseFunctionNames() to al_underscore_seperated(). Using mixed case may seem to tendy or Microsoft-like to you guys, but I think it's worth it, because I can type alBlit much faster than I can type al_blit.
Fix all the font problems, placing ALL of the font routines in a single, standardized module. Make sure to support AL_FONT *al_load_font("filename.ttf"). Also, make sure antialiased/colored font rendering is as easy as possible, since many people use AA/colored text output as it is, and the existing Allegro font libraries make this difficult. It would be good to try and meet everyone's needs with the Allegro 5.0 font library, because I'd guess a lot of people (like me) are sick of writing and re-writing their own font output routines.
I think multithreading support is pointless, since the whole idea of Allegro is that it runs within a SINGLE virtualized screen - there's no point in communicating between threads/etc, if you have a good set of polling functions.
Making Allegro modular does NOT mean that Allegro should be based on DLLs. The size of allegro_core.dll + allegro_gfx.dll + allegro_sound.dll + allegro_io.dll + allegro_opengl.dll + allegro_timer.dll will most certainly add up to much more than just statically linking the whole mess, because there will be tons of uncalled functions in each DLL. I think we should abandon support of DLLs, because after working with Visual Basic a lot, I've realized how bloated each individual library (component) can become. There's a lot more pressure on developers to reduce the size of their libraries (and reduce unnecessary linkage of functions) if a simple Allegro program compiles into a 1+ meg executable.
It would be very cool if Allegro's makefile could help build plug-in libraries by setting up a bunch of standard makefile variables. That way, each plug-in could have a relatively simple makefile, without all the system-specific junk required to place headers/libs/etc in the correct directories.
I prefer mouse.x, because it looks nicer than mouse_x and looks much nicer than CMouse::GetXPos(). Also, we only need to support one mouse cursor, so there's no reason to have ugly Class::GetBlahBlah() functions like C++.
Add an option for set_gfx_mode to autodetect color depth, using either AL_BEST or AL_FASTEST.
Don't get rid of DOS...it's much better for debugging. Also, aside from threads and networking, all the functionality is already there.
Place MIDI in a module of its own, since everyone hates it.
There's no reason to get rid of global variables like mouse_x, etc. I mean, there IS only one mouse cursor on your screen.
al_main() is a great idea. Command-line arguments could be retrieved by some allegro function.
Place DATAFILES in a seperate module; they are just more bloat for people who don't use them.
double al_global_timer(); could return the number of floating-pt seconds since program start-up. I suggest you include something like that, since it's only a few lines of code, and I have to re-write them in every Allegro program I make. Since seconds are the SI unit for time, it would be much better to use seconds rather than milliseconds.
Build in Allegro functions for handing double buffers/triple buffers/etc. For example, a global variable like BITMAP *gfx_buffer could be created, then the user draws what he/she wishes to the buffer, and calls al_display_buffer(). Then all the ugly mouse cursor display code could be called inside al_display_buffer().
BITMAP *load_video_bitmap(const char *filename, PALETTE *pal);
BITMAP *load_system_bitmap(const char *filename, PALETTE *pal);
Perhaps we could make hardware acceleration a parameter for al_set_gfx_mode, and if the user chooses hardware acceleration, then triple or double buffering will be set up using the global BITMAP *gfx_buffer system. Also, we could make load_bitmap() and create_bitmap() be intelligent functions, which would return a video bitmap if possible, then a system bitmap, then a memory bitmap IF in HW accelerated mode, otherwise just return a system/memory bitmap. Then in general, create_memory_bitmap / load_memory_bitmap / create_video_bitmap / load_video_bitmap / create_system_bitmap / load_system_bitmap / ETC could be used if a specific type of bitmap is desired, and load_bitmap/create_bitmap would be used if the programmer just wants the fastest type of BITMAP * in the town. Maybe you can understand what I'm saying, maybe not. Anyway, my whole point is that software/hardware rendering can be made more transparent than it currently is, without sacrificing performance or flexibility.
There needs to be an internal Allegro variable (_allegro_blender_mode?) that is set when the set_***_blender() functions are called. That way, people can write add-ons which accelerate the existing Allegro blenders. set_trans_blender + draw_sprite comes to mind as a combination that could be made a teensy bit faster with D3D/OpenGL.
Vtables should include EVERY function which could potentially be accelerated (polygon3d_f).
Get rid of fixed-precision integer stuff. Use either radians or degrees as the default angle measure (we could vote on radians/degrees), and decide on measuring angles either CW from the right horizontal or CCW from the right horizontal. Then stick with it .
Support rotated sprites with seperate scale factors in the x/y directions (al_pivot_nonuniform_scaled_sprite? hehehe) Then V-mirror is a negative y scale, and H-mirror is a negative x scale.
Get rid of that incredibly ugly
unsigned long id; /* for identifying sub-bitmaps */
inside the BITMAP structure. Replace it with BITMAP *root_parent, which will point to the root parent of a sub-bitmap (and be passed from generation to generation of sub-bitmap), and can serve the same purpose in is_same_bitmap, without the ugly 'global unique id' generation thing.
Well, these are just ideas. I hope you find some of them to be good suggestions.
[ January 04, 2002: Message edited by: Connelly Barnes ]

Bob
Free Market Evangelist
September 2000
avatar

For graphics related suggestions, please post in the other thread.
quote:I would prefer alMixedCaseFunctionNames() to al_underscore_seperated(). Using mixed case may seem to tendy or Microsoft-like to you guys, but I think it's worth it, because I can type alBlit much faster than I can type al_blit.

Except no one else likes it
This was discussed before in alhack (see the Allegro docs).
quote:
I prefer mouse.x, because it looks nicer than mouse_x and looks much nicer than CMouse::GetXPos(). Also, we only need to support one mouse cursor, so there's no reason to have ugly Class::GetBlahBlah() functions like C++.

It's probably going to end up as al_read_button(AL_MOUSE_B_LEFT), al_read_axis(AL_MOUSE_X), or somesuch. See the conductors list for details.
quote:
Add an option for set_gfx_mode to autodetect color depth, using either AL_BEST or AL_FASTEST.

AL_BEST == 32bpp, AL_FASTEST == 8bpp.
That's about it. Other than that, the speed factor will depend on what you do and how you do it, rather than something Allegro can somehow dectect before your program has
executed.
quote:
There's no reason to get rid of global variables like mouse_x, etc. I mean, there IS only one mouse cursor on your screen.
That's what we said about 'screen', 'joy', and lots of other variables. It soon became unmanageable, or severely limits the features and extensibility of Allegro. We're getting rid of almost all globals.
quote:
al_main() is a great idea. Command-line arguments could be retrieved by some allegro function.

What's wrong with almain(int argc, char **argv)?
quote:
For al_set, make sure that Allegro's internal configuration variables are seperated from the ones that programmers will doubtlessly want to set for their own purposes.

See the config API thread.
quote:
Perhaps we could make hardware acceleration a parameter for al_set_gfx_mode, and if the user chooses hardware acceleration, then triple or double buffering will be set up using the global BITMAP *gfx_buffer system.

Bad idea. A better solution would be for the user to specifically ask for the update method.
quote:
Also, we could make load_bitmap() and create_bitmap() be intelligent functions, which would return a video bitmap if possible, then a system bitmap, then a memory bitmap IF in HW accelerated mode, otherwise just return a system/memory bitmap.

Other bad idea. First, it's not clear what you'll be doing with the bitmap. If you're planning to read it a lot (to do some effects or blending), then having in video memory is a bad idea. Secondly, you lose all your video bitmaps when you switch out of a Windows app. You don't really want to reload all your files, now do you?
quote:
Anyway, my whole point is that software/ hardware rendering can be made more transparent than it currently is, without sacrificing performance or flexibility.

But it is. Want accelerated bitmap? Make your own 6 line function which returns the proper type. Otherwise, Allegro could claim that a certain bitmap type is "fast" whn in fact it is not (blending a video bitmap).
quote:
There needs to be an internal Allegro variable (_allegro_blender_mode?) that is set when the set_***_blender() functions are called. That way, people can write add-ons which accelerate the existing Allegro blenders.
This makes writting add-ons for blending a whole lot harder.
quote:
set_trans_blender + draw_sprite comes to mind as a combination that could be made a teensy bit faster with D3D/OpenGL.

FBlend already makes it faster (about 5x). OpenGL would sure help, but that wil only happen when blitting from to the screen.
quote:
Vtables should include EVERY function which could potentially be accelerated (polygon3d_f).

No, they should include every function. It's damn near impossible to tell what they'll accelerate next
quote:
Support rotated sprites with seperate scale factors in the x/y directions (al_pivot_nonuniform_scaled_sprite? hehehe) Then V-mirror is a negative y scale, and H-mirror is a negative x scale.

Already on the table. One function, with possibly rotate_sprite and pivot_sprite for the often-used cases.
quote:
Get rid of that incredibly ugly
unsigned long id; /* for identifying sub-bitmaps */
inside the BITMAP structure. Replace it with BITMAP *root_parent, which will point to the root parent of a sub-bitmap (and be passed from generation to generation of sub-bitmap), and can serve the same purpose in is_same_bitmap, without the ugly 'global unique id' generation thing.

What if you destroy the parent BITMAP? Now you need to include list management. But then, if you delete a sub-bitmap, you'll need to do some extra work to get rid of it. This is really something internal to Allegro, so it wouldn't really go into the API.

--
- Bob
[ -- All my signature links are 404 -- ]

spellcaster
Member #1,493
September 2001
avatar

Oh... I just wanted to point out that I had once a system with two mice connected, so don't be sure there's just one.

I did this only to play a self written air hockey with a friend of mine, and it was fun. I'm not sure what insert_your_os_here will do if you connect two mice right now, but I might try just for the fun of it :)

--
There are no stupid questions, but there are a lot of inquisitive idiots.

Eric Love
Member #846
December 2000

I didn't read it it all but...
We should have versions of draw_sprite and the primitives which observe the z-buffer.

23yrold3yrold
Member #1,134
March 2001
avatar

Quote:

We should have versions of draw_sprite and the primitives which observe the z-buffer.

Oh Lord yes. I was just wishing for this yesterday.

--
Software Development == Church Development
Step 1. Build it.
Step 2. Pray.

Korval
Member #1,538
September 2001
avatar

Quote:

Oh Lord yes. I was just wishing for this yesterday.

Yet another problem that would be easily solved with OpenGL.

[ January 05, 2002: Message edited by: Korval ]

axilmar
Member #1,204
April 2001

About the naming convention : that's 4 people guys! 'DrawSprite' looks much better in the long term than 'draw_sprite'; it makes code browsing faster.

For one more time, Allegro needs to go 3D. Everyone is doing 3D; couldn't Allegro developers provide an API for 3D ? or they don't like 3D at all ? And don't say again 'use AllegGL'; OpenGL is not the most efficient way of doing 3D in Windows; Direct3D is. The API would provide wrappers above Direct3D/OpenGL/whatever 3D system is available in the target machine.

About DOS : I think that support for it should be dropped. DOS is so much outdated technologically.

About C or C++. If you plan to do it in C, why don't you keep it as C-like as possible ? I mean, using straight functions, variables, structs and enums. You may drop vtables already, and provide the functions as is. For example you could have "blit_memory_to_screen", "blit_screen_to_memory", "blit_memory_to_memory", "create_video_bitmap", "create_memory_bitmap", etc.

23yrold3yrold
Member #1,134
March 2001
avatar

Quote:

I'm very much considering writing an allegro interface .h file that inlines calls from the rediculously unreasonable under_score style to the far more legitimate AltCaps style.

I'll write one now (OK, start writting one now) and stick it on my site. Any objections to (dest, source) in all the blitting functions? :P

--
Software Development == Church Development
Step 1. Build it.
Step 2. Pray.

Bob
Free Market Evangelist
September 2000
avatar

quote:For one more time, Allegro needs to go 3D. Everyone is doing 3D; couldn't Allegro developers provide an API for 3D ? or they don't like 3D at all ? And don't say again 'use AllegGL'; OpenGL is not the most efficient way of doing 3D in Windows; Direct3D is. The API would provide wrappers above Direct3D/OpenGL/whatever 3D system is available in the target machine.
See Shawns' thought. The link was posted on this web board somewhere...
quote:
About C or C++. If you plan to do it in C, why don't you keep it as C-like as possible ? I mean, using straight functions, variables, structs and enums. You may drop vtables already, and provide the functions as is. For example you could have "blit_memory_to_screen", "blit_screen_to_memory", "blit_memory_to_memory", "create_video_bitmap", "create_memory_bitmap", etc.

See this thread
quote:In your face, Bob!
Great! Now you only have Peter, Eric, Shawn, Michael and George to convince

--
- Bob
[ -- All my signature links are 404 -- ]

23yrold3yrold
Member #1,134
March 2001
avatar

Screw 'em :P Just make a little custom header like Korval and myself said. Of course, if that header could be included with the main Allegro distribution so everyone could use it, whoopie!!

--
Software Development == Church Development
Step 1. Build it.
Step 2. Pray.



Go to: