doris-develop Mailing List for Doris - OpenGL scripting
Brought to you by:
trout
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
|
Feb
|
Mar
|
Apr
(143) |
May
(6) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
|
Oct
(13) |
Nov
|
Dec
|
From: Nick T. <ni...@ro...> - 2004-10-18 19:14:45
|
Hey, I'm definitely going to check this out: http://www.devlib-central.org/ This looks like what I want... Nick |
From: Nick T. <ni...@ro...> - 2004-10-18 16:40:04
|
> > I'm in two minds whether to create a Doris2 project (or another > > project entirely) and do totally without GLUT and GLUI, but still > > having GL to do the rendering, leaving Doris (1) as it is. >=20 > That might not be a bad idea. For audio, you might want to look at > SAL (http://www.bookofhook.com/sal), it's much lighter weight than > bringing in SDL_mixer, but if you're using SDL already, it may not > make much of a difference either way. >=20 > For me it's not about the games, it's about a combination of having an > easy to use game framework AND tools framework, because when I'm > messing around with stuff the tool often IS the game -- separate tools > and games are an anachronism to some degree as far as I'm concerned. Okay, I think I'm going to create a new project. I'll leave Doris as GLUI, GLUT, GL with a toLua++ binding and start a new project. LuaGame? Bacon? :) Components in new project: * SDL - gfx, joystick * SAL/SDL_mixer - sound * Glbind.cpp - drawing - copied from Doris so don't have to maintain toLua stuff in new project. * enet - networking. * OpenDE - physics/collision. * Add some sprite library, particle system etc. * Some basic GUI library. What I like about using SDL is all the components there are to adopt and merge in. Probably do a manual Lua binding. Anyway, this is a longer term project. I should probably finish that q2x stuff first. Can I get CVS access? :) Nick |
From: Brian H. <ho...@bo...> - 2004-10-18 03:06:37
|
> I'm in two minds whether to create a Doris2 project (or another > project entirely) and do totally without GLUT and GLUI, but still > having GL to do the rendering, leaving Doris (1) as it is. That might not be a bad idea. For audio, you might want to look at SAL (http://www.bookofhook.com/sal), it's much lighter weight than bringing in SDL_mixer, but if you're using SDL already, it may not make much of a difference either way. For me it's not about the games, it's about a combination of having an easy to use game framework AND tools framework, because when I'm messing around with stuff the tool often IS the game -- separate tools and games are an anachronism to some degree as far as I'm concerned. Brian |
From: Nick T. <nic...@sh...> - 2004-10-18 02:38:37
|
Mmmmm, so where am I going to get a teapot from if I remove GLUT?! It looks like SDL and SDL_mixer could provide some nice functionality to Doris. I'm not sure about sticking with GLUI though. I mean, if you want a game prototyping system you don't really want to use GLUI. It might be useful for development, but perhaps not for the game. It would certainly cut down on the amount of work to do porting of GLUT. I'm in two minds whether to create a Doris2 project (or another project entirely) and do totally without GLUT and GLUI, but still having GL to do the rendering, leaving Doris (1) as it is. Hmmm, Nick |
From: Nick T. <nic...@sh...> - 2004-10-17 18:05:54
|
> I did some profiling of Doris because its running like a dog at the moment. Okay, I've done some selective inlining of vector constructors and assignment functions, made the teapot a call list and this seems to have has an effect. What does glutSetWindow do that it's the top abuser?! simple.lua script: Func Func+Child Hit Time % Time % Count Function --------------------------------------------------------- 2246.281 27.6 2246.281 27.6 10022 _glutSetWindow@4 (glut32.dll) 1592.583 19.6 1593.201 19.6 204 tolua_gl_glCallList00(struct lua_State *) (glbind.obj) 1277.548 15.7 2975.329 36.6 204 Window::display(void) (doriswin.obj) 500.402 6.2 7446.505 91.6 1 _glutMainLoop@0 (glut32.dll) 315.488 3.9 315.488 3.9 1220 GLUI_Main::s_finish_drawing(void) (glui_main.obj) 314.137 3.9 314.137 3.9 1011 GLUI_Rotation::setup_texture(void) (glui_rotation.obj) 301.665 3.7 301.665 3.7 1 ___glutCreateWindowWithExit@8 (glut32.dll) 279.178 3.4 1807.712 22.2 526 GLUI_Master_Object::glui_motion_func(int,int) (glui_master_object.obj) 110.522 1.4 110.522 1.4 1011 GLUI_Rotation::draw_ball(float) (glui_rotation.obj) 100.715 1.2 100.715 1.2 6792 _glutBitmapCharacter@8 (glut32.dll) 98.585 1.2 98.585 1.2 1011 GLUI_Rotation::iaction_draw_active_area_ortho(void) (glui_rotation.obj) |
From: Nick T. <nic...@sh...> - 2004-10-17 17:54:18
|
> Hmm, yeah, I looked in my archives, and you were generally okay with SDL, I must have mixed that up with something else you were opposed to because of size issues? It might have been the JPEG stuff? I ended up just putting the loading code in as I can't see why you'd want to save JPEGS from Doris (maybe BMPs but not JPEGs). > In the short run, I'd say that SDL support is by far the biggest step. May have a look at this today as its raining. > Sorry I haven't been able to contribute much, been busy with the bills and all =( Me neither, been pretty busy at work and had 2 hard drives melt down on me :(. I could do with getting that Q2X Lua work into a more secure place. Luckily I had it backed up on another drive, I lost a tonne of other stuff though. Nick |
From: Brian H. <ho...@bo...> - 2004-10-17 17:43:29
|
> I remember being against it. I can't find an email saying that! Hmm, yeah, I looked in my archives, and you were generally okay with SDL, I must have mixed that up with something else you were opposed to because of size issues? > http://www.novodex.com/ Ahhhh...yeah, if you want to go 3D, that would be nice to integrate. In the short run, I'd say that SDL support is by far the biggest step. Sorry I haven't been able to contribute much, been busy with the bills and all =3D( Brian |
From: Nick T. <nic...@sh...> - 2004-10-17 17:36:35
|
> I remember being against it. I can't find an email saying that! I don't > think SDL is that large from what I remember. I might have had another > reason for not using it initially. Oops, sorry, that should say "I don't remember..." :-/ |
From: Nick T. <nic...@sh...> - 2004-10-17 17:29:04
|
> Didn't we have this conversation already at some point, and you were against SDL because of its size? I remember being against it. I can't find an email saying that! I don't think SDL is that large from what I remember. I might have had another reason for not using it initially. I've been wondering for a while if stuffing all this into Doris is the right thing to do or if it should be just left as an OpenGL viewer and a new project started. But since noone seems to use Doris and it will still be an OpenGL viewer I don't see the harm. > I'm not familiar with Rocket. http://www.novodex.com/ Nick ------------------------------------------------------- This SF.net email is sponsored by: IT Product Guide on ITManagersJournal Use IT products in your business? Tell us what you think of them. Give us Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more http://productguide.itmanagersjournal.com/guidepromo.tmpl _______________________________________________ Doris-develop mailing list Dor...@li... https://lists.sourceforge.net/lists/listinfo/doris-develop |
From: Brian H. <ho...@bo...> - 2004-10-17 17:17:12
|
> I want to be able to prototype little games in Doris so I'd like > other features in SDL as well, e.g. joystick support, timers, etc. Didn't we have this conversation already at some point, and you were against SDL because of its size? > I started integrating enet for net support and I'd like to add > OpenDE for collision and physics. Perhaps I can add the Rocket > stuff as well? It's kind of an experiment. I'm not familiar with Rocket. Brian |
From: Nick T. <nic...@sh...> - 2004-10-17 17:12:39
|
I want to be able to prototype little games in Doris so I'd like other features in SDL as well, e.g. joystick support, timers, etc. I started integrating enet for net support and I'd like to add OpenDE for collision and physics. Perhaps I can add the Rocket stuff as well? It's kind of an experiment. Nick ----- Original Message ----- From: "Brian Hook" <ho...@bo...> To: <dor...@li...> Sent: Sunday, October 17, 2004 6:56 AM Subject: Re: [Doris] Doris profiling > I'm thinking of getting rid of GLUT and replacing it with SDL so > this might solve some of that problem and then we can use the font > rendering from that which I'd guess is faster? I'm not 100% sure if it's going to be faster, but as a general rule I would argue that SDL is going to be a superior alternative to GLUT under almost any situation since GLUT is poorly maintained and rarely used. Brian ------------------------------------------------------- This SF.net email is sponsored by: IT Product Guide on ITManagersJournal Use IT products in your business? Tell us what you think of them. Give us Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more http://productguide.itmanagersjournal.com/guidepromo.tmpl _______________________________________________ Doris-develop mailing list Dor...@li... https://lists.sourceforge.net/lists/listinfo/doris-develop |
From: Brian H. <ho...@bo...> - 2004-10-17 13:56:42
|
> I'm thinking of getting rid of GLUT and replacing it with SDL so > this might solve some of that problem and then we can use the font > rendering from that which I'd guess is faster? I'm not 100% sure if it's going to be faster, but as a general rule I would argue that SDL is going to be a superior alternative to GLUT under almost any situation since GLUT is poorly maintained and rarely used. Brian |
From: Nick T. <nic...@sh...> - 2004-10-17 07:52:50
|
I did some profiling of Doris because its running like a dog at the moment. I used the VC6 profiler. I had to put an older graphics card (GeForce 2) back in my development machine which could account for some rendering sluggishness, but I don't remember the performance of GeF2s being that bad. It looks like the problem is the GLUI rendering, more specifically, font rendering. It looks like the font strings, or maybe each character should be cached as a render list in GL to help speed things up. I'm thinking of getting rid of GLUT and replacing it with SDL so this might solve some of that problem and then we can use the font rendering from that which I'd guess is faster? Nick ---- Welcome to Doris 1.1. Using Lua 5.0.2, Copyright (C) 1994-2004 Tecgraf, PUC-Rio Executing Lua file: ..\bin\eg\test.lua Profile: Function timing, sorted by time Date: Sun Oct 17 00:35:22 2004 Program Statistics ------------------ Command line at 2004 Oct 17 00:34: doris ..\bin\eg\test.lua Total time: 17850.373 millisecond Time outside of functions: 61.117 millisecond Call depth: 44 Total functions: 2163 Total hits: 2039061 Function coverage: 33.8% Overhead Calculated 2 Overhead Average 2 Module Statistics for doris.exe ------------------------------- Time in module: 17789.257 millisecond Percent of time in module: 100.0% Functions in module: 2163 Hits in module: 2039061 Module function coverage: 33.8% Func Func+Child Hit Time % Time % Count Function --------------------------------------------------------- 4978.986 28.0 4978.986 28.0 41169 _glutSetWindow@4 (glut32.dll) 3508.792 19.7 16696.134 93.9 1 _glutMainLoop@0 (glut32.dll) 1681.681 9.5 1681.681 9.5 153041 _glutBitmapCharacter@8 (glut32.dll) 1506.654 8.5 2224.340 12.5 160 Window::display(void) (doriswin.obj) 840.191 4.7 840.191 4.7 3104 GLUI_Main::s_finish_drawing(void) (glui_main.obj) 589.025 3.3 589.025 3.3 1 ___glutCreateWindowWithExit@8 (glut32.dll) 569.454 3.2 570.428 3.2 320 tolua_gl_glCallList00(struct lua_State *) (glbind.obj) 563.979 3.2 4008.939 22.5 975 GLUI_Master_Object::glui_motion_func(int,int) (glui_master_object.obj) 345.362 1.9 345.362 1.9 5070 GLUI_StdBitmaps::draw_bitmap(int,int,int) (glui_bitmaps.obj) 328.885 1.8 339.489 1.9 585 GLUI_Master_Object::glui_passive_motion_func(int,int) (glui_master_object.obj) 323.850 1.8 323.850 1.8 1023 GLUI_Rotation::setup_texture(void) (glui_rotation.obj) 312.997 1.8 1939.253 10.9 9665 GLUI_Control_Presentation::s_draw_control_text(class GLUI_Control *,int,int) (glui_control_presentation.obj) 279.306 1.6 404.588 2.3 1023 GLUI_Rotation::iaction_draw_active_area_ortho(void) (glui_rotation.obj) 177.079 1.0 177.079 1.0 2 _glutCreateSubWindow@20 (glut32.dll) 157.326 0.9 3237.962 18.2 512 GLUI_Master_Object::glui_display_func(void) (glui_master_object.obj) 120.541 0.7 120.541 0.7 1023 GLUI_Rotation::draw_ball(float) (glui_rotation.obj) 83.749 0.5 83.749 0.5 373152 vec2::operator[](int) (algebra3.obj) 74.889 0.4 74.889 0.4 178440 _glutBitmapWidth@8 (glut32.dll) 64.175 0.4 979.097 5.5 1023 GLUI_Mouse_Interaction::draw_active_area(void) (glui_mouse_iaction.obj) 58.609 0.3 2768.308 15.6 10895 GLUI_Control::draw_recursive(int,int) (glui_control.obj) 54.129 0.3 55.194 0.3 160 tolua_gl_glClear00(struct lua_State *) (glbind.obj) 52.663 0.3 1716.201 9.6 20548 _glutBitmapString(void *,char const *) (glui.obj) 47.196 0.3 119.871 0.7 25124 _glutBitmapWidthString(void *,char const *) (glui.obj) 44.390 0.2 44.390 0.2 127866 vec2::vec2(float,float) (algebra3.obj) 43.905 0.2 167.292 0.9 13440 GLUI_Control::pack(int,int) (glui_control.obj) 42.344 0.2 42.344 0.2 106155 GLUI_Node::node_next(void) (glui_node.obj) 26.681 0.1 1777.242 10.0 1140 _luaV_execute (lvm.obj) 21.692 0.1 39.984 0.2 13035 GLUI_Control::get_this_column_dims(int *,int *,int *,int *,int *,int *) (glui_control.obj) 21.447 0.1 21.447 0.1 98067 vec4::operator[](int) (algebra3.obj) 21.033 0.1 21.033 0.1 4004 GLUI_Main::draw_raised_box(int,int,int,int) (glui_main.obj) 20.790 0.1 20.790 0.1 27270 _luaH_getstr (ltable.obj) 17.663 0.1 448.176 2.5 1218 GLUI_Listbox_Presentation::draw(class GLUI_Control *) (glui_listbox.obj) 16.654 0.1 34.779 0.2 973 operator*(class mat4 &,class mat4 &) (algebra3.obj) 16.574 0.1 16.574 0.1 9009 _luaM_realloc (lmem.obj) 16.274 0.1 155.237 0.9 1228 GLUI_Panel::draw(int,int) (glui_panel.obj) 15.988 0.1 15.988 0.1 44102 GLUI_Control::get_font(void) (glui_control.obj) 15.924 0.1 15.924 0.1 9591 _glutGet@4 (glut32.dll) 15.858 0.1 37.361 0.2 15123 GLUI_Control::set_to_glut_window(void) (glui_control.obj) 15.375 0.1 19.283 0.1 1535 GLUI_Main::set_ortho_projection(void) (glui_main.obj) 14.992 0.1 16.855 0.1 1559 GLUI_Control_Presentation::s_draw_active_box(class GLUI_Control *,int,int,int,int) (glui_control_presentation.obj) 14.863 0.1 479.005 2.7 1023 GLUI_Rotation::iaction_draw_active_area_persp(void) (glui_rotation.obj) 14.000 0.1 413.795 2.3 1509 GLUI_Rollout::draw(int,int) (glui_rollout.obj) 13.927 0.1 65.391 0.4 13665 GLUI_Main::align_controls(class GLUI_Control *) (glui_main.obj) 13.560 0.1 13.560 0.1 1023 GLUI_Rotation::setup_lights(void) (glui_rotation.obj) 13.485 0.1 29.800 0.2 22114 _luaH_get (ltable.obj) 13.483 0.1 13.483 0.1 21248 _glutGetWindow@0 (glut32.dll) 12.455 0.1 33.952 0.2 2393 GLUI_Standard_Checkbox_Presentation::draw_active_area(class GLUI_Control *) (glui_checkbox.obj) 12.052 0.1 92.243 0.5 17053 GLUI_Control::string_width(char const *) (glui_control.obj) 11.987 0.1 11.987 0.1 12704 GLUI_Control::set_to_bkgd_color(void) (glui_control.obj) 11.534 0.1 11.534 0.1 1509 GLUI_Control_Presentation::s_draw_emboss_box(int,int,int,int) (glui_control_presentation.obj) 11.044 0.1 11.044 0.1 1023 GLUI_Main::set_viewport(void) (glui_main.obj) 11.009 0.1 31.486 0.2 725 GLUI_EditText::draw_text(int,int) (glui_edittext.obj) 10.373 0.1 1241.646 7.0 669 GLUI_Main::check_subwindow_position(void) (glui_main.obj) 10.335 0.1 1731.570 9.7 7943 _luaD_precall (ldo.obj) 9.445 0.1 11.418 0.1 1628 GLUI_Main::find_control(int,int) (glui_main.obj) 9.445 0.1 11.131 0.1 24741 _luaA_indexAcceptable (lapi.obj) 9.167 0.1 11.906 0.1 7599 _luaS_newlstr (lstring.obj) 8.713 0.0 69.381 0.4 706 GLUI_Spinner::draw(int,int) (glui_spinner.obj) 8.202 0.0 8.202 0.0 18535 _negindex (lapi.obj) 8.161 0.0 1724.361 9.7 20548 GLUI_Control_Presentation::s_draw_string(char const *,void *) (glui_control_presentation.obj) 8.089 0.0 26.438 0.1 15123 GLUI::s_restore_window(int) (glui.obj) 7.939 0.0 48.982 0.3 13665 GLUI_Control::align(void) (glui_control.obj) 7.931 0.0 7.931 0.0 44177 GLUI_Node::node_prev(void) (glui_node.obj) 7.883 0.0 7.883 0.0 160 _glutWireCube@8 (glut32.dll) 7.848 0.0 16.103 0.1 1946 mat4::mat4(float,float,float,float,float,float,float,float,float,float,float ,float,float,float,float,float) (algebra3.obj) 7.781 0.0 7.781 0.0 35596 vec4::operator=(class vec4 const &) (algebra3.obj) 7.565 0.0 1174.593 6.6 977 GLUI_Control::execute_callback(void) (glui_control.obj) 7.373 0.0 568.285 3.2 2495 GLUI_Standard_Button_Presentation::draw_button_text(class GLUI_Control *,bool) (glui_button.obj) 7.274 0.0 22.854 0.1 6369 _lua_pushlstring (lapi.obj) 7.017 0.0 98.755 0.6 973 Arcball::mouse_motion(int,int,int,int,int) (arcball.obj) 6.940 0.0 6.940 0.0 1218 GLUI_Control_Presentation::draw_box_inwards_outline(int,int,int,int,bool) (glui_control_presentation.obj) 6.917 0.0 34.405 0.2 1946 quat::to_mat4(void) (quaternion.obj) 6.772 0.0 6.772 0.0 31584 vec4::vec4(void) (algebra3.obj) 6.451 0.0 34.366 0.2 3165 _luaV_gettable (lvm.obj) 6.430 0.0 2765.457 15.5 499 GLUI_Master_Object::glui_idle_func(void) (glui_master_object.obj) 6.338 0.0 6.338 0.0 1 ___glutInitWithExit@12 (glut32.dll) 6.274 0.0 128.330 0.7 973 GLUI_Rotation::iaction_mouse_held_down_handler(int,int,int) (glui_rotation.obj) 6.152 0.0 3433.366 19.3 973 GLUI_Mouse_Interaction::mouse_held_down_handler(int,int,int) (glui_mouse_iaction.obj) 6.148 0.0 11.762 0.1 2969 mat4::mat4(class mat4 const &) (algebra3.obj) 6.075 0.0 76.630 0.4 977 Window::updateCB(int) (doriswin.obj) 5.866 0.0 28.627 0.2 6285 _lua_pushstring (lapi.obj) 5.769 0.0 2451.696 13.8 557 GLUI_Main::refresh(void) (glui_main.obj) 5.696 0.0 194.718 1.1 725 GLUI_EditText::draw(int,int) (glui_edittext.obj) 5.352 0.0 12.454 0.1 1946 Arcball::mouse_to_sphere(class vec2) (arcball.obj) 5.318 0.0 15.995 0.1 4540 _lua_rawget (lapi.obj) 5.184 0.0 5.184 0.0 17407 GLUI_Control::get_int_val(void) (glui_control.obj) 5.172 0.0 1191.053 6.7 993 GLUI_Main::post_update_main_gfx(void) (glui_main.obj) 5.139 0.0 31.222 0.2 7486 _luaH_set (ltable.obj) 5.115 0.0 11.631 0.1 14141 _luaA_index (lapi.obj) 5.109 0.0 9.566 0.1 9226 _lua_type (lapi.obj) 4.937 0.0 766.463 4.3 2393 GLUI_Standard_Checkbox_Presentation::draw(class GLUI_Control *) (glui_checkbox.obj) 4.651 0.0 4.651 0.0 19294 vec3::operator[](int) (algebra3.obj) 4.534 0.0 4.534 0.0 2580 _glutPostRedisplay@0 (glut32.dll) 4.435 0.0 5.119 0.0 2114 GLUI_Master_Object::find_glui_by_window_id(int) (glui_master_object.obj) 4.362 0.0 906.912 5.1 669 GLUI_Main::pack_controls(void) (glui_main.obj) 4.317 0.0 1803.352 10.1 2103 _luaD_call (ldo.obj) 4.173 0.0 8.982 0.1 7180 _sweeplist (lgc.obj) 4.069 0.0 40.926 0.2 3165 _lua_gettable (lapi.obj) 4.001 0.0 4.001 0.0 1 _glutSolidTeapot@8 (glut32.dll) 3.993 0.0 7.103 0.0 1987 mat4::mat4(class vec4 const &,class vec4 const &,class vec4 const &,class vec4 const &) (algebra3.obj) 3.967 0.0 7.175 0.0 3943 mat4::operator=(class mat4 const &) (algebra3.obj) 3.820 0.0 24.536 0.1 5741 _newkey (ltable.obj) 3.659 0.0 7.519 0.0 1074 GLUI_Control::output_live(int) (glui_control.obj) 3.620 0.0 3.620 0.0 17036 GLUI_Control::get_control_name(void) (glui_control.obj) 3.509 0.0 3.509 0.0 9004 _luaV_equalval (lvm.obj) 3.412 0.0 14.871 0.1 3094 GLUI_Panel::update_size(void) (glui_panel.obj) 3.394 0.0 3.627 0.0 9880 _luaH_mainposition (ltable.obj) 3.252 0.0 6.383 0.0 5066 GLUI_Control::char_width(char) (glui_control.obj) 3.231 0.0 9.226 0.1 160 tolua_glu_gluLookAt00(struct lua_State *) (glubind.obj) 3.089 0.0 8.716 0.0 1609 _luaB_assert (lbaselib.obj) 3.002 0.0 4.695 0.0 2010 GLUI_Rotation::copy_float_array_to_ball(void) (glui_rotation.obj) 2.990 0.0 2.990 0.0 7943 _luaD_poscall (ldo.obj) 2.936 0.0 5.991 0.0 4138 _lua_tonumber (lapi.obj) 2.888 0.0 2.888 0.0 3213 _arrayindex (ltable.obj) 2.819 0.0 16.151 0.1 512 GLUI_StaticText_Presentation::draw(class GLUI_Control *) (glui_statictext.obj) 2.815 0.0 586.873 3.3 2495 GLUI_Standard_Button_Presentation::draw(class GLUI_Control *) (glui_button.obj) 2.749 0.0 21.760 0.1 47 GLUI_RadioButton_Presentation::draw(class GLUI_Control *) (glui_radio.obj) 2.697 0.0 4.331 0.0 357 _traversetable (lgc.obj) 2.674 0.0 2.674 0.0 669 _glutPositionWindow@8 (glut32.dll) 2.631 0.0 3440.236 19.3 975 GLUI_Main::motion(int,int) (glui_main.obj) 2.551 0.0 21.089 0.1 3510 GLUI_Rollout::update_size(void) (glui_rollout.obj) 2.373 0.0 17.140 0.1 2932 GLUI_Checkbox::update_size(void) (glui_checkbox.obj) 2.355 0.0 22.967 0.1 2825 GLUI_Button::update_size(void) (glui_button.obj) 2.342 0.0 7.917 0.0 3609 _tolua_tonumber (tolua_to.obj) 2.237 0.0 19.492 0.1 983 GLUI_Rotation::copy_ball_to_float_array(void) (glui_rotation.obj) 2.234 0.0 16.162 0.1 2076 _luaV_settable (lvm.obj) 2.129 0.0 2.452 0.0 4004 _luaH_getnum (ltable.obj) 2.079 0.0 17.156 0.1 599 _module_index_event (tolua_event.obj) 1.990 0.0 4.133 0.0 4932 _lua_isnumber (lapi.obj) 1.983 0.0 1.983 0.0 23 _glutSetCursor@4 (glut32.dll) 1.979 0.0 10.171 0.1 994 mat4::mat4(void) (algebra3.obj) 1.947 0.0 2.388 0.0 998 GLUI_Main::idle(void) (glui_main.obj) 1.922 0.0 588.794 3.3 2495 GLUI_Button::draw(int,int) (glui_button.obj) 1.899 0.0 4.617 0.0 4089 _tolua_isnumber (tolua_is.obj) 1.864 0.0 1.864 0.0 1476 GLUI::set_to_bkgd_color(void) (glui.obj) 1.786 0.0 1.786 0.0 4290 _lua_pushnumber (lapi.obj) 1.779 0.0 2.175 0.0 1687 _lua_toboolean (lapi.obj) 1.761 0.0 23.956 0.1 2064 _luaV_index (lvm.obj) 1.756 0.0 2.656 0.0 3605 _tolua_isnoobj (tolua_is.obj) 1.748 0.0 1.748 0.0 8377 _lua_gettop (lapi.obj) 1.736 0.0 9.728 0.1 731 GLUI_EditText::update_substring_bounds(void) (glui_edittext.obj) 1.687 0.0 1.687 0.0 5476 _lua_settop (lapi.obj) 1.667 0.0 768.130 4.3 2393 GLUI_Checkbox::draw(int,int) (glui_checkbox.obj) 1.640 0.0 1.640 0.0 5857 _reallymarkobject (lgc.obj) 1.638 0.0 1.983 0.0 1946 operator/(class vec2 const &,float) (algebra3.obj) 1.610 0.0 7.993 0.0 2193 GLUI_EditText::substring_width(int,int) (glui_edittext.obj) 1.609 0.0 5.818 0.0 1013 identity3D(void) (algebra3.obj) 1.590 0.0 8.451 0.0 1446 GLUI_Listbox::update_size(void) (glui_listbox.obj) 1.583 0.0 2.235 0.0 2720 _lua_pushvalue (lapi.obj) 1.576 0.0 1.576 0.0 7948 vec4::vec4(float,float,float,float) (algebra3.obj) 1.565 0.0 51.612 0.3 1001 _lua_call (lapi.obj) 1.554 0.0 27.140 0.2 2119 _lua_rawset (lapi.obj) 1.549 0.0 4.974 0.0 986 GLUI_Control::set_float_array_val(float *) (glui_control.obj) 1.544 0.0 2.933 0.0 960 _next (lparser.obj) 1.521 0.0 1.521 0.0 4659 mat4::operator[](int) (algebra3.obj) 1.399 0.0 1.996 0.0 1700 _lua_getmetatable (lapi.obj) 1.394 0.0 18.214 0.1 160 tolua_gl_glLight00(struct lua_State *) (glbind.obj) 1.344 0.0 2.323 0.0 53 Window::reSize(int,int) (doriswin.obj) 1.321 0.0 1.339 0.0 1 tolua_glu_gluSphere00(struct lua_State *) (glubind.obj) 1.285 0.0 6.280 0.0 6 _sweepstrings (lgc.obj) 1.284 0.0 4.569 0.0 643 _numuse (ltable.obj) 1.280 0.0 1.549 0.0 480 tolua_gl_glPushMatrix00(struct lua_State *) (glbind.obj) 1.279 0.0 8.533 0.0 745 _lua_isusertype (tolua_is.obj) 1.254 0.0 2.258 0.0 320 tolua_gl_glEnable00(struct lua_State *) (glbind.obj) 1.219 0.0 14.220 0.1 643 _resize (ltable.obj) 1.197 0.0 1.197 0.0 2022 vec3::operator=(class vec3 const &) (algebra3.obj) 1.186 0.0 1.510 0.0 1946 operator-(class vec2 const &,class vec2 const &) (algebra3.obj) 1.182 0.0 4.808 0.0 3146 _freeobj (lgc.obj) 1.180 0.0 449.357 2.5 1218 GLUI_Listbox::draw(int,int) (glui_listbox.obj) 1.143 0.0 2.996 0.0 1740 _luaL_checkany (lauxlib.obj) 1.077 0.0 2.281 0.0 1823 _luaH_getany (ltable.obj) 1.041 0.0 397.254 2.2 112 GLUI_Main::reshape(int,int) (glui_main.obj) 1.008 0.0 4.273 0.0 1065 _setnodevector (ltable.obj) 0.978 0.0 10.493 0.1 944 GLUI_EditText::update_size(void) (glui_edittext.obj) 0.957 0.0 0.957 0.0 878 GLUI_Spinner::update_size(void) (glui_spinner.obj) 0.955 0.0 0.955 0.0 2926 operator*(class vec3 const &,class vec3 const &) (algebra3.obj) 0.943 0.0 0.943 0.0 1218 GLUI_Control_Presentation::draw_box(int,int,int,int,float,float,float) (glui_control_presentation.obj) 0.922 0.0 0.922 0.0 2986 vec3::vec3(float,float,float) (algebra3.obj) 0.877 0.0 1.076 0.0 160 doris_glLoadMatrixf(class Matrix &) (glbind.obj) 0.852 0.0 17.938 0.1 512 GLUI_StaticText::draw(int,int) (glui_statictext.obj) 0.846 0.0 0.943 0.0 160 tolua_gl_glLoadIdentity00(struct lua_State *) (glbind.obj) 0.836 0.0 1.011 0.0 980 operator^(class vec3 const &,class vec3 const &) (algebra3.obj) 0.809 0.0 4.057 0.0 640 _tolua_tofieldnumber (tolua_to.obj) 0.794 0.0 0.794 0.0 2004 _luaZ_read (lzio.obj) 0.774 0.0 8.662 0.0 619 GLUI_Main::passive_motion(int,int) (glui_main.obj) 0.770 0.0 0.770 0.0 1946 Arcball::set_constraints(bool,bool) (arcball.obj) 0.765 0.0 1.559 0.0 2004 _ezread (lundump.obj) 0.758 0.0 4.285 0.0 160 _tolua_isnumberarray (tolua_is.obj) 0.748 0.0 24.294 0.1 755 _callTMres (lvm.obj) 0.744 0.0 1.738 0.0 1011 quat::set(class vec3,float) (quaternion.obj) 0.743 0.0 2.206 0.0 641 GLUI_StaticText::update_size(void) (glui_statictext.obj) 0.731 0.0 0.752 0.0 2453 _traverseclosure (lgc.obj) 0.728 0.0 0.728 0.0 725 GLUI_EditText::draw_insertion_pt(void) (glui_edittext.obj) 0.709 0.0 2.739 0.0 1524 _newlstr (lstring.obj) 0.707 0.0 1.382 0.0 160 tolua_gl_glShadeModel00(struct lua_State *) (glbind.obj) 0.689 0.0 12.483 0.1 1 _luaL_loadfile (lauxlib.obj) 0.683 0.0 488.651 2.7 59 GLUI_Master_Object::glui_reshape_func(int,int) (glui_master_object.obj) 0.680 0.0 44.864 0.3 43 GLUI_Control::translate_and_draw(void) (glui_control.obj) 0.674 0.0 5.557 0.0 422 _luaH_new (ltable.obj) 0.664 0.0 0.664 0.0 1576 _luaC_link (lgc.obj) 0.663 0.0 6.548 0.0 480 tolua_gl_glMultMatrix00(struct lua_State *) (glbind.obj) 0.655 0.0 3.053 0.0 731 _LoadString (lundump.obj) 0.654 0.0 0.654 0.0 1214 vec2::operator=(class vec2 const &) (algebra3.obj) 0.653 0.0 0.653 0.0 1946 vec2::vec2(class vec2 const &) (algebra3.obj) 0.641 0.0 0.947 0.0 1356 _tolua_pushnumber (tolua_push.obj) 0.634 0.0 0.864 0.0 480 doris_glMultMatrixf(class Matrix &) (glbind.obj) 0.617 0.0 2.642 0.0 424 _addk (lcode.obj) 0.616 0.0 0.616 0.0 1992 _luaO_rawequalObj (lobject.obj) 0.587 0.0 1.998 0.0 1070 _luaF_newCclosure (lfunc.obj) 0.572 0.0 0.926 0.0 480 tolua_gl_glPopMatrix00(struct lua_State *) (glbind.obj) 0.572 0.0 0.572 0.0 2957 vec3::vec3(class vec3 const &) (algebra3.obj) 0.569 0.0 0.779 0.0 39 GLUI_Column::draw(int,int) (glui_column.obj) 0.564 0.0 0.564 0.0 42 GLUI_Bitmap::load_from_array(int const *) (glui_bitmaps.obj) 0.562 0.0 7.324 0.0 640 _tolua_pushfieldnumber (tolua_push.obj) 0.560 0.0 5.747 0.0 10 _propagatemarks (lgc.obj) 0.556 0.0 0.556 0.0 828 _hashnum (ltable.obj) 0.551 0.0 13.054 0.1 680 _tolua_constant (tolua_map.obj) 0.539 0.0 1.833 0.0 160 tolua_gl_glTranslate00(struct lua_State *) (glbind.obj) 0.533 0.0 0.533 0.0 210 _luaO_str2d (lobject.obj) 0.526 0.0 0.526 0.0 42 GLUI_Control::GLUI_Control(void) (glui_control.obj) 0.522 0.0 7.429 0.0 788 _lua_settable (lapi.obj) 0.513 0.0 9.484 0.1 745 _tolua_isusertype (tolua_is.obj) |
From: Nick T. <nic...@sh...> - 2004-07-14 19:45:41
|
> So this Komodo IDE is fairly nice. The personal edition is only $30 > as well. Just thought I'd mention it. I think Python is probably > better for large scale application development, but I'm still not sure > if I'm up to learning a whole new language _again_... I tried Komodo and thought it was more of a CGI/web development tool, although it has a nice stable debugger. I usually use the PythonWin IDE (which has a simple debugger) or SciTE to edit Python. When I'm doing Python GUI work I use Boa-Constructor (and wxWidgets). Boa-Constructor is a full Python IDE (GUI editor and target debugger), written in Python. Try the CVS version on SF. I think I might try the ActiveState Python .net editor/debugger next as Komodo didn't seem quite right or worth the difference between PythonWin IDE and the commercial price. Learning Python is definitely worth doing. If you learn C++, Lua and Python you'll be a fully equipped games programmer. Python is excellent for tools programming (XML, quick GUI apps, text parsing, tool chains etc) and a lot of games pipelines are moving in this direction. Lua, as you know, is great for embedding and runtime shinanagans and C++ is good for the core architecture and other faster more structured stuff. Each has its strengths and weaknesses but together, if used appropriately, can increase productivity significantly. > I think you were waiting on me for something with GLUI, but I can't > recall what it was? I think it was updating the toLua binding. You changed the GLUI stuff but modified the glue code by hand. I generally regenerate all of the bindings automatically before a release to make sure everything is working (which I assume won't work now). You might be able to use a diff/merge tool to do this fairly quickly (i.e. merge glui.pkg and glui.h ??). Nick |
From: Brian H. <ho...@bo...> - 2004-07-13 01:36:30
|
So this Komodo IDE is fairly nice. The personal edition is only $30 as well. Just thought I'd mention it. I think Python is probably better for large scale application development, but I'm still not sure if I'm up to learning a whole new language _again_... I think you were waiting on me for something with GLUI, but I can't recall what it was? Brian |
From: Brian H. <ho...@bo...> - 2004-06-01 20:09:36
|
> It won't default to nil if something isn't found, which is an > advantage and does mean it will flag unfound vars. Ah, okay, that's a pretty major advantage. > won't get much more static analysis at compile time than Lua. Some > people don't like the scooping of Python either. I do find Python > more robust than Lua and trust it much more for large scale > projects however its speed performance and bulk put it more in > "heavyweight" scripting category. I like both Python and Lua and > see a need for both. Right, Lua for scripting and Python more for application development/prototyping. > Did you finish the GLUI stuff? Hah! Surely you jest =3D) I'll try to look into it again soon, but I got distracted with PyGame... Brian |
From: Nick T. <ni...@ro...> - 2004-06-01 18:24:10
|
> I had a look at Python finally. Hmmm, don't really see much of an > advantage over Lua, vis a vis typing/typos =3D/ It won't default to nil if something isn't found, which is an advantage and does mean it will flag unfound vars. However, you won't get much more static analysis at compile time than Lua. Some people don't like the scooping of Python either. I do find Python more robust than Lua and trust it much more for large scale projects however its speed performance and bulk put it more in "heavyweight" scripting category. I like both Python and Lua and see a need for both. I still need to finish off my networking code in Doris but have been busy out doing non-computery stuff of late, and a lot of work. After that I fancy integrating ODE into Doris. But I may go back to q2x before ODE stuff. Did you finish the GLUI stuff? Nick |
From: Brian H. <ho...@bo...> - 2004-06-01 17:33:33
|
I had a look at Python finally. Hmmm, don't really see much of an advantage over Lua, vis a vis typing/typos =3D/ Brian |
From: Nick T. <nic...@sh...> - 2004-05-04 07:21:06
|
> Off the top of my head, no, but it's the kind of thing where you only find out the limitations after a LOT of people have messed with it. Did a first pass on binding. Its not passing values yet, just connecting. Spent an hour or so trying to debug the damn thing when it wouldn't connect and then after trying it with old code it worked??? Since I've no idea what I did with the code I can only assume that the underlying network code locked up somehow and then unlock itself? Possibly! :-/ Anyway, dammit I was hoping to get values passed tonight, but no luck. Started trying to prototype the API (see attachment). Something like this: server = net.createServer(port) server:onConnect( function (client_table) ... end ) server:onDisconnect( function (client_table) ... end ) This could also be done: server = new.createServer( port = NB, onConnect = function (client_table) ... end, onDisconnect = function (client_table) ... end, etc. } or both mechanism could be provided with a wrapper? ---- client ---- client = net.createClient("address", port [, timeout] ) Not quite sure how to do the values. Maybe: each client has an output table, when a value changes in it, it is replicated in the client table at the server. The server can chose to read new values and blank them out (so it knows they are new), then it may chose to send or broadcast to the clients. The server could just send value pairs as putting values in a table doesn't seem to have much advantage? The client receives values in a table. Alternatively there could be one table on each client and one for each client on the server. Tables on client are synced on server, then server changes values and they are synced back. Mechanism knows internally what are client and what are server values to stop thrashing. Mmm, too tired now. Laterz, Nick |
From: Brian H. <ho...@bo...> - 2004-05-03 14:59:54
|
> Do you think this would be too limiting? Off the top of my head, no, but it's the kind of thing where you only find out the limitations after a LOT of people have messed with it. Brian |
From: Nick T. <nic...@sh...> - 2004-05-03 07:14:03
|
Did a little bit of work and checked it in. There's not Lua binding yet. I was trying to write some enet wrapper code, which I'll then bind to Lua. You can just start a server, then connect and disconnect a client at the moment. I was thinking to keep it simple you'd just implement a client server architecture. You start a server somewhere, clients join, they have networking tables. When they change values in their tables it's passed back to the server. The server decides what to broadcast by passing values into a table on the client(s). The game/application could be run on the server, so the clients may just pass mouse position and keys back and then the server decides object events etc and passes these on. Do you think this would be too limiting? I suppose this could be supplied as the default networking model, and if anyone wants anything more complicated in the future, an enet binding could be provided? Numbers and strings would be easy to replicate. I'm thinking tables and code could be replicated by the Lua source being passed on and executed on the target. User data and threads would be barred. Nick |
From: Nick T. <nic...@sh...> - 2004-05-01 19:11:49
|
>> A debugger would help. >ya think? =) I wouldnt mind one for q2x either. I wonder if we could revive a VisualLua one? We have one at work but obviously we can't use that. That one is written in Python ;-). Actually there is a really basic debugger with wxLua. I wonder if that would be the best route? >> The tolua system saves a lot of manual work. > But that works has been done already with the first pass, right? I've found it just as easy to update the package file in the past, as it is to put lots of markers in your header, but each to his own. Sometimes you change prototypes because of parsing problems in the package. I find it easier and quicker to just go through a file with lots of stuff commented out. > I would prefer that, immensely. It's just far too easy to have the .pkg and .h files diverge. The following is an example from the tolua++ docs. Why don't you try this: // tolua_export -- export one line //tolua_begin -- exports between the markers // tolua_end ----->8----->8----->8----->8----->8----->8----->8-- #ifndef EXAMPLE_H #define EXAMPLE_H class Example { // tolua_export private: string name; int number; public: void set_number(int number); //tolua_begin string get_name(); int get_number(); }; // tolua_end #endif ----->8----->8----->8----->8----->8----->8----->8----->8-- > This could be presented as an additional tool. I don't really find > the existing system that much of a hassle. That's because you use Python =) > these are entirely optional. I don't think the Lua parser or > compiler should be, or needs to be changed. > How would you add classes that would generate static compile time errors without modifying the parser? You could do it as a preprocess. I think a debugger would probably be the most useful thing though. Once you get used to it, not have strong type checking really isn't a problem. There are lots of Python docs and users which say the same. Nick |
From: Brian H. <ho...@bo...> - 2004-05-01 01:07:38
|
> A debugger would help. ya think? =3D) > The tolua system saves a lot of manual work. But that works has been done already with the first pass, right? > Tolua does present a mechanism to parse the .h files directly and > only take out the bits you want, but you have to add // tolua_start > // tolua_end style markers all over the place. I would prefer that, immensely. It's just far too easy to have the .pkg and .h files diverge. > Back end? Do you mean start up GL? I pretty sure there is code to > do that in SDL. Is SDL that much hassle to get going? Please expand. It's not difficult, it's just gotta be done. So anywhere there are glut calls, you have to convert to SDL calls, etc. Maybe I'm making too big a deal out of this, but that's partly because I've never actually had to write SDL code directly =3D) > This could be presented as an additional tool. I don't really find > the existing system that much of a hassle. That's because you use Python =3D) > these are entirely optional. I don't think the Lua parser or > compiler should be, or needs to be changed. How would you add classes that would generate static compile time errors without modifying the parser? Brian |
From: Nick T. <ni...@ro...> - 2004-05-01 00:39:31
|
> > I think it's because Lua defaults the value to nil if it doesn't > > find something, whereas Python recognises that its a typo. You can > > change Lua to find none existant globals using a metamethod, > > perhaps just in the debug version. Should we add this as an option > > to Doris? >=20 > Possibly, but it only sort of helps -- you still have to find the > error at run-time, and you have to go through some hoops when you DO > want to declare a global variable. It changes things enough that it > sort of stops being a Lua program. A debugger would help. > > One thing you need to do is update the GLUI packages in Doris so > > the binding can be auto generated. What else do you see will take > > all this time? > I can't stand the .pkg system. I really dislike tolua() and would > prefer to use manual bindings, to be honest. Having two sets of > headers is silly, and having it export all by default is also silly. I > would much prefer to do something like a tag for exporting to Lua, > e.g. > LUA_EXPORT void function( void ); > Is something like this possible? The tolua system saves a lot of manual work. You just have to go through and edit the interface you want to present in Lua and it does the rest for you, and all the error checking. Writing large bindings is tedious. If there were some benefit, like you want to do some clever Lua stuff then it might worth doing. For example, with enet I'd like to try doing the write to a table and it replicates idea, so there is a benefit to hand coding here. GUI APIs are just calls though and there is little benefit to hand coding. I'd say go ahead and hand code it if you like, but then if you didn't maintain it, I would have to, and I don't want to, so I'm not going to say hand code it! :) Tolua does present a mechanism to parse the .h files directly and only take out the bits you want, but you have to add // tolua_start // tolua_end style markers all over the place. This would then mean that if you redistributed this code it would contain these markers. It really doesn't take that long to do it by hand. The reason why I do it manually in this case is because I've tried other solutions and they just make the code look ugly and complicated and it doesn't save any time. In q2x I wrote a python script to generate bindings and declare variables, but this is really just to help with the conversion to Lua. Once this work is done the script will/should no longer be necessary. > > What needs doing? I thought you'd just have to swap over the half > > dozen callbacks to let the widgets operate and set GL up. I'm > > pretty sure there is code to use GL with SDL already. What else > > needs doing? >=20 > Well, all the back end stuff has to get going as well. Back end? Do you mean start up GL? I pretty sure there is code to do that in SDL. Is SDL that much hassle to get going? Please expand. > > I think some sort of class support and more though about modules > > and structure, using support from function environments, needs > > adding at this point. These could be offered as part of Doris? >=20 > I was envisioning a type system that could be done almost entirely > with a preprocessor, something like: This could be presented as an additional tool. I don't really find the existing system that much of a hassle. I thing the best solution is to provide a couple of util libraries which provide global checking and class support, and perhaps preprocessing and these are entirely optional. I don't think the Lua parser or compiler should be, or needs to be changed. Nick |
From: Brian H. <ho...@bo...> - 2004-04-30 23:06:46
|
Crap, I typed a response to this and it got ate by my mailer somewhere. Anyway... > You mean just playing around? Yes. > I think it's because Lua defaults the value to nil if it doesn't > find something, whereas Python recognises that its a typo. You can > change Lua to find none existant globals using a metamethod, > perhaps just in the debug version. Should we add this as an option > to Doris? Possibly, but it only sort of helps -- you still have to find the error at run-time, and you have to go through some hoops when you DO want to declare a global variable. It changes things enough that it sort of stops being a Lua program. > ..which is incredibly slow. I've never liked Java. Agreed, but with GL this isn't an issue. If you write the widgets one time they should work everywhere the same. > One thing you need to do is update the GLUI packages in Doris so > the binding can be auto generated. What else do you see will take > all this time? I can't stand the .pkg system. I really dislike tolua() and would prefer to use manual bindings, to be honest. Having two sets of headers is silly, and having it export all by default is also silly. I would much prefer to do something like a tag for exporting to Lua, e.g. LUA_EXPORT void function( void ); Is something like this possible? > What needs doing? I thought you'd just have to swap over the half > dozen callbacks to let the widgets operate and set GL up. I'm > pretty sure there is code to use GL with SDL already. What else > needs doing? Well, all the back end stuff has to get going as well. > I think some sort of class support and more though about modules > and structure, using support from function environments, needs > adding at this point. These could be offered as part of Doris? I was envisioning a type system that could be done almost entirely with a preprocessor, something like: deftype $vec2 =3D { x =3D "number", y =3D "number" } function add_vecs( $vec2 a, $vec2 b ) return $vec2{ x =3D a.x + b.y, y =3D a.y + b.y } end The preprocessor can easily type variables if a type exists, and if none exists it just works like old fashioned Lua. Doing: $vec2 a =3D $vec2:new() a.z =3D 3 -- generates compile time error Modifying the lexer to ignore all "$" would be pretty easy I think as well. Brian |