Triority

Previous topic - Next topic

MrTAToad

Quite video of it running in Linux (the sound is out of sync due to recording) : http://www.dailymotion.com/video/x23v9j5_triority-running-in-ubuntu-14_tech

Considering its using software rendering mode (due to the fact that hardware rendering isn't available), the FPS is pretty good!

Hemlos

Let me get this right..
You are programing C programs that use glbasic as a library?

What compiler is that in the new video?
What OS(Windows?)?

Bing ChatGpt is pretty smart :O

fuzzy70

I don't think Mr T is using GLB as a library, more of making his own system based on GLB commands I believe.

Lee
"Why don't you just make ten louder and make ten be the top number and make that a little louder?"
- "These go to eleven."

This Is Spinal Tap (1984)

MrTAToad

#18
Indeed - it uses some of Gernot's code - but only for arrays.  In addition, I have added a few memory checks to the code, just in case...  Everything else is written by me, but keeping the GLBASIC command names - and adding more...

Some commands are no longer needed

It uses STD::string for strings, so that it can be easily changed to use wide characters if I wanted to.  It is also only SDL2 based - so everything (music, sound, networking, graphics are all for SDL).

The Windows version can use either Visual Studio or Code::Blocks, whilst Linux/Mac use Code::Blocks.  This is what you saw in the video - Windows 8.1 VMPlayer running Ubuntu 14.

Once I figured that the video system wasn't telling the truth about hardware rendering (and currently its using software rendering only), everything works fine - I think.

Sprites and graphics drawing each have their own alpha mode, blend mode and colour mode, which nicely complicates things...  There are 4 different blend modes now

kanonet

What do you mean about Hardware rendering being not available?
Lenovo Thinkpad T430u: Intel i5-3317U, 8GB DDR3, NVidia GeForce 620M, Micron RealSSD C400 @Win7 x64

MrTAToad

Hardware rendering isn't available for virtual machines or where the drivers aren't available.  This means all rendering has to be done in software rather than being done by the graphics card.

Performance wise, as long as things are kept simple (limit sprite scaling and rotating), it shouldn't be too bad.

kanonet

Ah I did not get the part that you meant a virtual machine, did think hardware rendering is not possible with your lib. :-[
Lenovo Thinkpad T430u: Intel i5-3317U, 8GB DDR3, NVidia GeForce 620M, Micron RealSSD C400 @Win7 x64

MrTAToad

#22
I've include the Linux project, and with any luck the executable should just run if you have SDL2 libraries installed.  Would probably need to chmod the Starfield program too (incase zip hasn't preserved it all).

MrTAToad

QuoteAh I did not get the part that you meant a virtual machine, did think hardware rendering is not possible with your lib
All versions should be able too - I dont have any Linux devices that allow hardware rendering unforunately.

fuzzy70

Is there a way to check if it's hardware or software rendering?. I only ask as recently installed opensuse in vmplayer and the tron lightcycle game runs at over 250fps & that's 3d. Granted it's not the most demanding 3d but I wasn't expecting a fps that high especially only running the vm with a single core.

Lee
"Why don't you just make ten louder and make ten be the top number and make that a little louder?"
- "These go to eleven."

This Is Spinal Tap (1984)

MrTAToad

#25
Have a look on this site : http://mgltools.scripps.edu/documentation/how-to/hardware-opengl

It will take you through what you can do to check.  However, it does appear that VM systems lie about the information.  So whilst it may say direct rendering and whatnot, it's quite possible that it isn't true!

glxinfo with no parameters also returns interesting info...

fuzzy70

Thanks.

Typed in the info from the site you linked & got the following response
Code (glbasic) Select
OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE;
The site said if I got
Code (glbasic) Select
Mesa GLX Indirect then it is using software & not hardware, which to me points it is using hardware.

Lee
"Why don't you just make ten louder and make ten be the top number and make that a little louder?"
- "These go to eleven."

This Is Spinal Tap (1984)

MrTAToad

Indeed - thats what I get too.

In addition, glxinfo on its own gives :

Quotename of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile,
    GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample,
    GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB,
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
    GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer, GLX_OML_swap_method,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile,
    GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
    GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample,
    GLX_EXT_create_context_es2_profile, GLX_EXT_fbconfig_packed_float,
    GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context,
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
    GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile,
    GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB,
    GLX_ARB_get_proc_address, GLX_ARB_multisample,
    GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB,
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
    GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
    GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control,
    GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
    GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
    GLX_SGI_video_sync
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on SVGA3D; build: RELEASE; 
OpenGL version string: 2.1 Mesa 10.1.3
OpenGL shading language version string: 1.20
OpenGL extensions:
    GL_AMD_shader_trinary_minmax, GL_ANGLE_texture_compression_dxt3,
    GL_ANGLE_texture_compression_dxt5, GL_APPLE_packed_pixels,
    GL_APPLE_vertex_array_object, GL_ARB_ES2_compatibility,
    GL_ARB_clear_buffer_object, GL_ARB_color_buffer_float, GL_ARB_copy_buffer,
    GL_ARB_debug_output, GL_ARB_depth_texture, GL_ARB_draw_buffers,
    GL_ARB_draw_elements_base_vertex, GL_ARB_explicit_attrib_location,
    GL_ARB_fragment_coord_conventions, GL_ARB_fragment_program,
    GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
    GL_ARB_framebuffer_object, GL_ARB_framebuffer_sRGB,
    GL_ARB_get_program_binary, GL_ARB_half_float_pixel,
    GL_ARB_half_float_vertex, GL_ARB_internalformat_query,
    GL_ARB_invalidate_subdata, GL_ARB_map_buffer_alignment,
    GL_ARB_map_buffer_range, GL_ARB_multisample, GL_ARB_multitexture,
    GL_ARB_occlusion_query, GL_ARB_occlusion_query2,
    GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite,
    GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sampler_objects,
    GL_ARB_shader_objects, GL_ARB_shader_texture_lod,
    GL_ARB_shading_language_100, GL_ARB_shadow, GL_ARB_sync,
    GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
    GL_ARB_texture_cube_map, GL_ARB_texture_env_add,
    GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
    GL_ARB_texture_env_dot3, GL_ARB_texture_float,
    GL_ARB_texture_mirrored_repeat, GL_ARB_texture_non_power_of_two,
    GL_ARB_texture_rectangle, GL_ARB_texture_storage, GL_ARB_texture_swizzle,
    GL_ARB_transpose_matrix, GL_ARB_vertex_array_bgra,
    GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_binding,
    GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader,
    GL_ARB_window_pos, GL_ATI_blend_equation_separate, GL_ATI_draw_buffers,
    GL_ATI_separate_stencil, GL_ATI_texture_env_combine3,
    GL_ATI_texture_float, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
    GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
    GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
    GL_EXT_copy_texture, GL_EXT_draw_range_elements, GL_EXT_fog_coord,
    GL_EXT_framebuffer_blit, GL_EXT_framebuffer_object,
    GL_EXT_framebuffer_sRGB, GL_EXT_gpu_program_parameters,
    GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
    GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object, GL_EXT_point_parameters,
    GL_EXT_polygon_offset, GL_EXT_provoking_vertex, GL_EXT_rescale_normal,
    GL_EXT_secondary_color, GL_EXT_separate_specular_color,
    GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap,
    GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
    GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_s3tc,
    GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
    GL_EXT_texture_env_add, GL_EXT_texture_env_combine,
    GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic,
    GL_EXT_texture_lod_bias, GL_EXT_texture_object, GL_EXT_texture_rectangle,
    GL_EXT_texture_sRGB, GL_EXT_texture_sRGB_decode, GL_EXT_texture_swizzle,
    GL_EXT_vertex_array, GL_EXT_vertex_array_bgra,
    GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip,
    GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate, GL_KHR_debug,
    GL_MESA_pack_invert, GL_MESA_window_pos, GL_NV_blend_square,
    GL_NV_fog_distance, GL_NV_light_max_exponent, GL_NV_packed_depth_stencil,
    GL_NV_primitive_restart, GL_NV_texgen_reflection,
    GL_NV_texture_env_combine4, GL_NV_texture_rectangle, GL_NV_vdpau_interop,
    GL_OES_EGL_image, GL_OES_read_format, GL_S3_s3tc,
    GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
    GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays

96 GLX Visuals
    visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
  id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------------
0x021 24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8  0  0  0  0  0 0 None


Note that it says "Direct rendering: Yes".  However, I do believe it is lying, and it solely software based

MrTAToad

I've updated Triority a fair bit now, and as you can see in the archive, there are a few few new test programs.  SPRITE2MEM and MEM2SPRITE will be re-worked later on, as currently each sprite has a texture (for rendering) and a surface, which is only used for these two commands (which is a bit pointless).

I also fixed a bug whereby CPU time kept increasing when a program was minimised...

The test program will be split into two now - this post with contain the media and the next will have the programs.

MrTAToad