Operating System: Windows 10 64-bit
Render System: OpenGL
Compiler: MinGW-w64 (GCC 8.1.0)
Code: Select all
15:13:11: Creating resource group General
15:13:11: Creating resource group Internal
15:13:11: Creating resource group Autodetect
15:13:11: SceneManagerFactory for type 'DefaultSceneManager' registered.
15:13:11: Registering ResourceManager for type Material
15:13:11: Registering ResourceManager for type Mesh
15:13:11: Registering ResourceManager for type Skeleton
15:13:11: MovableObjectFactory for type 'ParticleSystem' registered.
15:13:11: OverlayElementFactory for type Panel registered.
15:13:11: OverlayElementFactory for type BorderPanel registered.
15:13:11: OverlayElementFactory for type TextArea registered.
15:13:11: Registering ResourceManager for type Font
15:13:11: ArchiveFactory for archive type FileSystem registered.
15:13:11: ArchiveFactory for archive type Zip registered.
15:13:11: DDS codec registering
15:13:11: FreeImage version: 3.18.0
15:13:11: This program uses FreeImage, a free, open source image library supporting all common bitmap formats. See http://freeimage.sourceforge.net for details
15:13:11: Supported formats: bmp,ico,jpg,jif,jpeg,jpe,jng,koa,iff,lbm,mng,pbm,pbm,pcd,pcx,pgm,pgm,png,ppm,ppm,ras,tga,targa,tif,tiff,wap,wbmp,wbm,psd,psb,cut,xbm,xpm,gif,hdr,g3,sgi,rgb,rgba,bw,exr,j2k,j2c,jp2,pfm,pct,pict,pic,3fr,arw,bay,bmq,cap,cine,cr2,crw,cs1,dc2,dcr,drf,dsc,dng,erf,fff,ia,iiq,k25,kc2,kdc,mdc,mef,mos,mrw,nef,nrw,orf,pef,ptx,pxn,qtk,raf,raw,rdc,rw2,rwl,rwz,sr2,srf,srw,sti,x3f,webp,jxr,wdp,hdp
15:13:11: Registering ResourceManager for type HighLevelGpuProgram
15:13:11: Registering ResourceManager for type Compositor
15:13:11: MovableObjectFactory for type 'Entity' registered.
15:13:11: MovableObjectFactory for type 'Light' registered.
15:13:11: MovableObjectFactory for type 'BillboardSet' registered.
15:13:11: MovableObjectFactory for type 'ManualObject' registered.
15:13:11: MovableObjectFactory for type 'BillboardChain' registered.
15:13:11: MovableObjectFactory for type 'RibbonTrail' registered.
15:13:11: Loading library .\RenderSystem_GL
15:13:11: Installing plugin: GL RenderSystem
15:13:11: OpenGL Rendering Subsystem created.
15:13:11: Plugin successfully installed
15:13:11: Loading library .\Plugin_ParticleFX
15:13:11: Installing plugin: ParticleFX
15:13:11: Particle Emitter Type 'Point' registered
15:13:11: Particle Emitter Type 'Box' registered
15:13:11: Particle Emitter Type 'Ellipsoid' registered
15:13:11: Particle Emitter Type 'Cylinder' registered
15:13:11: Particle Emitter Type 'Ring' registered
15:13:11: Particle Emitter Type 'HollowEllipsoid' registered
15:13:11: Particle Affector Type 'LinearForce' registered
15:13:11: Particle Affector Type 'ColourFader' registered
15:13:11: Particle Affector Type 'ColourFader2' registered
15:13:11: Particle Affector Type 'ColourImage' registered
15:13:11: Particle Affector Type 'ColourInterpolator' registered
15:13:11: Particle Affector Type 'Scaler' registered
15:13:11: Particle Affector Type 'Rotator' registered
15:13:11: Particle Affector Type 'DirectionRandomiser' registered
15:13:11: Particle Affector Type 'DeflectorPlane' registered
15:13:11: Plugin successfully installed
15:13:11: Loading library .\Plugin_BSPSceneManager
15:13:11: Installing plugin: BSP Scene Manager
15:13:11: Plugin successfully installed
15:13:11: Loading library .\Plugin_CgProgramManager
15:13:11: Installing plugin: Cg Program Manager
15:13:11: Plugin successfully installed
15:13:11: Loading library .\Plugin_PCZSceneManager
15:13:11: Installing plugin: Portal Connected Zone Scene Manager
15:13:11: PCZone Factory Type 'ZoneType_Default' registered
15:13:11: Plugin successfully installed
15:13:11: Loading library .\Plugin_OctreeZone
15:13:11: Installing plugin: Octree Zone Factory
15:13:11: Plugin successfully installed
15:13:11: Loading library .\Plugin_OctreeSceneManager
15:13:11: Installing plugin: Octree & Terrain Scene Manager
15:13:11: Plugin successfully installed
15:13:11: *-*-* OGRE Initialising
15:13:11: *-*-* Version 1.7.4 (Cthugha)
15:13:11: Added resource location 'data' of type 'FileSystem' to resource group 'General'
15:13:11: Added resource location 'SdkTrays.zip' of type 'Zip' to resource group 'General'
15:13:13: CPU Identifier & Features
15:13:13: -------------------------
15:13:13: * CPU ID: GenuineIntel: Intel(R) Core(TM) i5 CPU 650 @ 3.20GHz
15:13:13: * SSE: yes
15:13:13: * SSE2: yes
15:13:13: * SSE3: yes
15:13:13: * MMX: yes
15:13:13: * MMXEXT: yes
15:13:13: * 3DNOW: no
15:13:13: * 3DNOWEXT: no
15:13:13: * CMOV: yes
15:13:13: * TSC: yes
15:13:13: * FPU: yes
15:13:13: * PRO: yes
15:13:13: * HT: no
15:13:13: -------------------------
15:13:13: *** Starting Win32GL Subsystem ***
15:13:13: GLRenderSystem::_createRenderWindow "TutorialApplication Render Window", 1280x960 windowed miscParams: FSAA=0 FSAAHint= colourDepth=32 displayFrequency=0 gamma=false vsync=true vsyncInterval=1
15:13:13: Created Win32Window 'TutorialApplication Render Window' : 1280x984, 32bpp
15:13:14: GL_VERSION = 3.3.11672 Compatibility Profile Context
15:13:14: GL_VENDOR = ATI Technologies Inc.
15:13:14: GL_RENDERER = ATI Radeon HD 4300/4500 Series
15:13:14: GL_EXTENSIONS = GL_AMDX_debug_output GL_AMDX_vertex_shader_tessellator GL_AMD_conservative_depth GL_AMD_debug_output GL_AMD_depth_clamp_separate GL_AMD_draw_buffers_blend GL_AMD_name_gen_delete GL_AMD_performance_monitor GL_AMD_pinned_memory GL_AMD_sample_positions GL_AMD_seamless_cubemap_per_texture GL_AMD_shader_stencil_export GL_AMD_texture_cube_map_array GL_AMD_texture_texture4 GL_AMD_vertex_shader_tessellator GL_ARB_ES2_compatibility GL_ARB_base_instance GL_ARB_blend_func_extended GL_ARB_color_buffer_float GL_ARB_compressed_texture_pixel_storage GL_ARB_conservative_depth GL_ARB_copy_buffer GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_depth_texture GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced 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_geometry_shader4 GL_ARB_get_program_binary GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_imaging GL_ARB_instanced_arrays GL_ARB_internalformat_query 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_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_objects GL_ARB_shader_precision GL_ARB_shader_stencil_export GL_ARB_shader_texture_lod GL_ARB_shading_language_100 GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_shadow GL_ARB_shadow_ambient GL_ARB_sync GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_compression GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map GL_ARB_texture_cube_map_array 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_gather GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_lod GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_rgb10_a2ui GL_ARB_texture_snorm GL_ARB_texture_storage GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_transform_feedback_instanced GL_ARB_transpose_matrix GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ARB_window_pos GL_ATI_draw_buffers GL_ATI_envmap_bumpmap GL_ATI_fragment_shader GL_ATI_meminfo GL_ATI_separate_stencil GL_ATI_texture_compression_3dc GL_ATI_texture_env_combine3 GL_ATI_texture_float GL_ATI_texture_mirror_once GL_EXT_abgr GL_EXT_bgra GL_EXT_bindable_uniform 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_buffer GL_EXT_copy_texture GL_EXT_direct_state_access GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_geometry_shader4 GL_EXT_gpu_program_parameters GL_EXT_gpu_shader4 GL_EXT_histogram GL_EXT_multi_draw_arrays GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_packed_pixels GL_EXT_pixel_buffer_object GL_EXT_point_parameters GL_EXT_provoking_vertex GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shadow_funcs GL_EXT_stencil_wrap GL_EXT_subtexture GL_EXT_texgen_reflection GL_EXT_texture3D GL_EXT_texture_array GL_EXT_texture_buffer_object GL_EXT_texture_compression_latc GL_EXT_texture_compression_rgtc 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_integer GL_EXT_texture_lod GL_EXT_texture_lod_bias GL_EXT_texture_mirror_clamp GL_EXT_texture_object GL_EXT_texture_rectangle GL_EXT_texture_sRGB GL_EXT_texture_sRGB_decode GL_EXT_texture_shared_exponent GL_EXT_texture_snorm GL_EXT_texture_storage GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_transform_feedback GL_EXT_vertex_array GL_EXT_vertex_array_bgra GL_IBM_texture_mirrored_repeat GL_KTX_buffer_region GL_NV_blend_square GL_NV_conditional_render GL_NV_copy_depth_to_color GL_NV_copy_image GL_NV_explicit_multisample GL_NV_float_buffer GL_NV_half_float GL_NV_primitive_restart GL_NV_texgen_reflection GL_NV_texture_barrier GL_SGIS_generate_mipmap GL_SGIS_texture_edge_clamp GL_SGIS_texture_lod GL_SUN_multi_draw_arrays GL_WIN_swap_hint WGL_EXT_swap_control
15:13:14: Supported WGL extensions: WGL_ARB_extensions_string WGL_ARB_pixel_format WGL_ATI_pixel_format_float WGL_ARB_pixel_format_float WGL_ARB_multisample WGL_EXT_swap_control WGL_EXT_swap_control_tear WGL_ARB_pbuffer WGL_ARB_render_texture WGL_ARB_make_current_read WGL_EXT_extensions_string WGL_ARB_buffer_region WGL_EXT_framebuffer_sRGB WGL_ATI_render_texture_rectangle WGL_EXT_pixel_format_packed_float WGL_I3D_genlock WGL_NV_swap_group WGL_ARB_create_context WGL_AMD_gpu_association WGL_AMDX_gpu_association WGL_ARB_create_context_profile WGL_NV_float_buffer
15:13:14: ***************************
15:13:14: *** GL Renderer Started ***
15:13:14: ***************************
15:13:14: Registering ResourceManager for type GpuProgram
15:13:14: GLSL support detected
15:13:14: GL: Using GL_EXT_framebuffer_object for rendering to textures (best)
15:13:14: FBO PF_UNKNOWN depth/stencil support: D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_L8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_L16 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_A8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_A4L4 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_BYTE_LA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_R5G6B5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_B5G6R5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_A4R4G4B4 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_A1R5G5B5 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_B8G8R8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_A8R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_B8G8R8A8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_A2R10G10B10 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_A2B10G10R10 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_FLOAT16_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_FLOAT16_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_FLOAT32_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_FLOAT32_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_X8R8G8B8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_X8B8G8R8 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_SHORT_RGBA depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_R3G3B2 depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_FLOAT16_R depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_FLOAT32_R depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_SHORT_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_FLOAT16_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_FLOAT32_GR depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: FBO PF_SHORT_RGB depth/stencil support: D0S0 D0S1 D0S4 D0S8 D0S16 D16S0 D24S0 D32S0 Packed-D24S8
15:13:14: [GL] : Valid FBO targets PF_UNKNOWN PF_L8 PF_L16 PF_A8 PF_A4L4 PF_BYTE_LA PF_R5G6B5 PF_B5G6R5 PF_A4R4G4B4 PF_A1R5G5B5 PF_R8G8B8 PF_B8G8R8 PF_A8R8G8B8 PF_B8G8R8A8 PF_A2R10G10B10 PF_A2B10G10R10 PF_FLOAT16_RGB PF_FLOAT16_RGBA PF_FLOAT32_RGB PF_FLOAT32_RGBA PF_X8R8G8B8 PF_X8B8G8R8 PF_SHORT_RGBA PF_R3G3B2 PF_FLOAT16_R PF_FLOAT32_R PF_SHORT_GR PF_FLOAT16_GR PF_FLOAT32_GR PF_SHORT_RGB
15:13:14: RenderSystem capabilities
15:13:14: -------------------------
15:13:14: RenderSystem Name: OpenGL Rendering Subsystem
15:13:14: GPU Vendor: ati
15:13:14: Device Name: ATI Radeon HD 4300/4500 Series
15:13:14: Driver Version: 3.3.11672.0
15:13:14: * Fixed function pipeline: yes
15:13:14: * Hardware generation of mipmaps: yes
15:13:14: * Texture blending: yes
15:13:14: * Anisotropic texture filtering: yes
15:13:14: * Dot product texture operation: yes
15:13:14: * Cube mapping: yes
15:13:14: * Hardware stencil buffer: yes
15:13:14: - Stencil depth: 8
15:13:14: - Two sided stencil support: yes
15:13:14: - Wrap stencil values: yes
15:13:14: * Hardware vertex / index buffers: yes
15:13:14: * Vertex programs: yes
15:13:14: * Number of floating-point constants for vertex programs: 256
15:13:14: * Number of integer constants for vertex programs: 0
15:13:14: * Number of boolean constants for vertex programs: 0
15:13:14: * Fragment programs: yes
15:13:14: * Number of floating-point constants for fragment programs: 256
15:13:14: * Number of integer constants for fragment programs: 0
15:13:14: * Number of boolean constants for fragment programs: 0
15:13:14: * Geometry programs: yes
15:13:14: * Number of floating-point constants for geometry programs: 16384
15:13:14: * Number of integer constants for geometry programs: 0
15:13:14: * Number of boolean constants for geometry programs: 0
15:13:14: * Supported Shader Profiles: arbfp1 arbvp1 glsl gp4gp gpu_gp nvgp4 ps_1_1 ps_1_2 ps_1_3 ps_1_4
15:13:14: * Texture Compression: yes
15:13:14: - DXT: yes
15:13:14: - VTC: no
15:13:14: - PVRTC: no
15:13:14: * Scissor Rectangle: yes
15:13:14: * Hardware Occlusion Query: yes
15:13:14: * User clip planes: yes
15:13:14: * VET_UBYTE4 vertex element type: yes
15:13:14: * Infinite far plane projection: yes
15:13:14: * Hardware render-to-texture: yes
15:13:14: * Floating point textures: yes
15:13:14: * Non-power-of-two textures: yes
15:13:14: * Volume textures: yes
15:13:14: * Multiple Render Targets: 8
15:13:14: - With different bit depths: yes
15:13:14: * Point Sprites: yes
15:13:14: * Extended point parameters: yes
15:13:14: * Max Point Size: 8192
15:13:14: * Vertex texture fetch: yes
15:13:14: * Number of world matrices: 0
15:13:14: * Number of texture units: 16
15:13:14: * Stencil buffer depth: 8
15:13:14: * Number of vertex blend matrices: 0
15:13:14: - Max vertex textures: 16
15:13:14: - Vertex textures shared: yes
15:13:14: * Render to Vertex Buffer : no
15:13:14: * GL 1.5 without VBO workaround: no
15:13:14: * Frame Buffer objects: yes
15:13:14: * Frame Buffer objects (ARB extension): no
15:13:14: * Frame Buffer objects (ATI extension): no
15:13:14: * PBuffer support: yes
15:13:14: * GL 1.5 without HW-occlusion workaround: no
15:13:14: Registering ResourceManager for type Texture
15:13:14: DefaultWorkQueue('Root') initialising on thread main.
15:13:14: Particle Renderer Type 'billboard' registered
15:13:14: SceneManagerFactory for type 'BspSceneManager' registered.
15:13:14: Registering ResourceManager for type BspLevel
15:13:14: SceneManagerFactory for type 'PCZSceneManager' registered.
15:13:14: MovableObjectFactory for type 'PCZLight' registered.
15:13:14: MovableObjectFactory for type 'Portal' registered.
15:13:14: MovableObjectFactory for type 'AntiPortal' registered.
15:13:14: PCZone Factory Type 'ZoneType_Octree' registered
15:13:14: PCZone Factory Type 'ZoneType_Terrain' registered
15:13:14: SceneManagerFactory for type 'OctreeSceneManager' registered.
15:13:14: SceneManagerFactory for type 'TerrainSceneManager' registered.
15:13:14: TerrainSceneManager: Registered a new PageSource for type Heightmap
15:13:14: Parsing scripts for resource group Autodetect
15:13:14: Finished parsing scripts for resource group Autodetect
15:13:14: Parsing scripts for resource group General
15:13:14: Parsing script default.material
15:13:14: Parsing script SdkTrays.material
15:13:14: Parsing script SdkTrays.fontdef
15:13:14: Parsing script SdkTrays.overlay
15:13:14: Bad element attribute line: '# you can offset the image to change the cursor "hotspot"' for element SdkTrays/Cursor in overlay
15:13:14: Texture: sdk_cursor.png: Loading 1 faces(PF_A8R8G8B8,32x32x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,32x32x1.
15:13:14: Texture: sdk_tray.png: Loading 1 faces(PF_A8R8G8B8,64x64x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,64x64x1.
15:13:14: Texture: sdk_button_up.png: Loading 1 faces(PF_A8R8G8B8,128x32x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,128x32x1.
15:13:14: Texture: sdk_text_box.png: Loading 1 faces(PF_A8R8G8B8,32x32x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,32x32x1.
15:13:14: Texture: sdk_mini_tray.png: Loading 1 faces(PF_A8R8G8B8,32x32x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,32x32x1.
15:13:14: Texture: sdk_track.png: Loading 1 faces(PF_A8R8G8B8,16x32x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,16x32x1.
15:13:14: Texture: sdk_handle.png: Loading 1 faces(PF_A8R8G8B8,16x16x1) with 4 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,16x16x1.
15:13:14: Texture: sdk_mini_text_box.png: Loading 1 faces(PF_A8R8G8B8,32x32x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,32x32x1.
15:13:14: Texture: sdk_label.png: Loading 1 faces(PF_A8R8G8B8,32x32x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,32x32x1.
15:13:14: Texture: sdk_separator.png: Loading 1 faces(PF_A8R8G8B8,64x16x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,64x16x1.
15:13:14: Texture: sdk_logo.png: Loading 1 faces(PF_A8R8G8B8,128x64x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,128x64x1.
15:13:14: Texture: sdk_shade.png: Loading 1 faces(PF_A8R8G8B8,64x48x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,64x48x1.
15:13:14: Texture: sdk_frame.png: Loading 1 faces(PF_A8R8G8B8,32x32x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,32x32x1.
15:13:14: Texture: sdk_mini_text_box_over.png: Loading 1 faces(PF_A8R8G8B8,32x32x1) with 5 hardware generated mipmaps from Image. Internal format is PF_A8R8G8B8,32x32x1.
15:13:14: Texture: sdk_pulse.png: Loading 1 faces(PF_R8G8B8,8x1x1) with 3 hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,8x1x1.
15:13:14: Finished parsing scripts for resource group General
15:13:14: Parsing scripts for resource group Internal
15:13:14: Finished parsing scripts for resource group Internal
15:13:14: Font SdkTrays/Captionusing texture size 128x64
15:13:14: Info: Freetype returned null for character 160 in font SdkTrays/Caption
15:13:14: Texture: SdkTrays/CaptionTexture: Loading 1 faces(PF_BYTE_LA,128x64x1) with hardware generated mipmaps from Image. Internal format is PF_BYTE_LA,128x64x1.
15:13:14: TerrainSceneManager: Activated PageSource Heightmap
15:13:14: Texture: grass_tex2.png: Loading 1 faces(PF_R8G8B8,512x512x1) with 5 hardware generated mipmaps from Image. Internal format is PF_X8R8G8B8,512x512x1.
15:13:15: Mesh: Loading cube.mesh.
15:13:15: Can't assign material to SubEntity of Ogre/MO1 because this Material does not exist. Have you forgotten to define it in a .material script?
15:13:15: *** Initializing OIS ***
15:13:15: Font SdkTrays/Valueusing texture size 256x128
15:13:15: Info: Freetype returned null for character 127 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 128 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 129 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 130 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 131 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 132 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 133 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 134 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 135 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 136 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 137 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 138 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 139 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 140 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 141 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 142 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 143 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 144 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 145 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 146 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 147 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 148 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 149 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 150 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 151 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 152 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 153 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 154 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 155 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 156 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 157 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 158 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 159 in font SdkTrays/Value
15:13:15: Info: Freetype returned null for character 160 in font SdkTrays/Value
15:13:15: Texture: SdkTrays/ValueTexture: Loading 1 faces(PF_BYTE_LA,256x128x1) with hardware generated mipmaps from Image. Internal format is PF_BYTE_LA,256x128x1.
15:13:19: DefaultWorkQueue('Root') shutting down on thread main.
15:13:19: PCZone Factory Type 'ZoneType_Octree' unregistered
15:13:19: PCZone Factory Type 'ZoneType_Terrain' unregistered
15:13:19: Unregistering ResourceManager for type BspLevel
15:13:19: *-*-* OGRE Shutdown
15:13:19: Unregistering ResourceManager for type Compositor
15:13:19: Unregistering ResourceManager for type Font
15:13:19: Unregistering ResourceManager for type Skeleton
15:13:19: Unregistering ResourceManager for type Mesh
15:13:19: Unregistering ResourceManager for type HighLevelGpuProgram
15:13:19: Uninstalling plugin: Octree & Terrain Scene Manager
15:13:19: Plugin successfully uninstalled
15:13:19: Unloading library .\Plugin_OctreeSceneManager
15:13:19: Uninstalling plugin: Octree Zone Factory
15:13:19: Plugin successfully uninstalled
15:13:19: Unloading library .\Plugin_OctreeZone
15:13:19: Uninstalling plugin: Portal Connected Zone Scene Manager
15:13:19: Plugin successfully uninstalled
15:13:19: Unloading library .\Plugin_PCZSceneManager
15:13:19: Uninstalling plugin: Cg Program Manager
15:13:19: Plugin successfully uninstalled
15:13:19: Unloading library .\Plugin_CgProgramManager
15:13:19: Uninstalling plugin: BSP Scene Manager
15:13:19: Plugin successfully uninstalled
15:13:19: Unloading library .\Plugin_BSPSceneManager
15:13:19: Uninstalling plugin: ParticleFX
15:13:19: Plugin successfully uninstalled
15:13:19: Unloading library .\Plugin_ParticleFX
15:13:19: Uninstalling plugin: GL RenderSystem
15:13:19: Unregistering ResourceManager for type GpuProgram
15:13:19: *** Stopping Win32GL Subsystem ***
15:13:19: Unregistering ResourceManager for type Texture
15:13:19: Plugin successfully uninstalled
15:13:19: Unloading library .\RenderSystem_GL
15:13:19: Unregistering ResourceManager for type Material
Here's the source code:
BaseApplication.cpp
Code: Select all
/*
-----------------------------------------------------------------------------
Filename: BaseApplication.cpp
-----------------------------------------------------------------------------
This source file is part of the
___ __ __ _ _ _
/___\__ _ _ __ ___ / / /\ \ (_) | _(_)
// // _` | '__/ _ \ \ \/ \/ / | |/ / |
/ \_// (_| | | | __/ \ /\ /| | <| |
\___/ \__, |_| \___| \/ \/ |_|_|\_\_|
|___/
Tutorial Framework
http://www.ogre3d.org/tikiwiki/
-----------------------------------------------------------------------------
*/
#include "BaseApplication.h"
//-------------------------------------------------------------------------------------
BaseApplication::BaseApplication(void)
: mRoot(0),
mCamera(0),
mSceneMgr(0),
mWindow(0),
mResourcesCfg(Ogre::StringUtil::BLANK),
mPluginsCfg(Ogre::StringUtil::BLANK),
mTrayMgr(0),
mCameraMan(0),
mDetailsPanel(0),
mCursorWasVisible(false),
mShutDown(false),
mInputManager(0),
mMouse(0),
mKeyboard(0)
{
}
//-------------------------------------------------------------------------------------
BaseApplication::~BaseApplication(void)
{
if (mTrayMgr) delete mTrayMgr;
if (mCameraMan) delete mCameraMan;
//Remove ourself as a Window listener
Ogre::WindowEventUtilities::removeWindowEventListener(mWindow, this);
windowClosed(mWindow);
delete mRoot;
}
//-------------------------------------------------------------------------------------
bool BaseApplication::configure(void)
{
// Show the configuration dialog and initialise the system
// You can skip this and use root.restoreConfig() to load configuration
// settings if you were sure there are valid ones saved in ogre.cfg
if(mRoot->showConfigDialog())
{
// If returned true, user clicked OK so initialise
// Here we choose to let the system create a default rendering window by passing 'true'
mWindow = mRoot->initialise(true, "TutorialApplication Render Window");
return true;
}
else
{
return false;
}
}
//-------------------------------------------------------------------------------------
void BaseApplication::chooseSceneManager(void)
{
// Get the SceneManager, in this case a generic one
mSceneMgr = mRoot->createSceneManager(Ogre::ST_EXTERIOR_CLOSE);
}
//-------------------------------------------------------------------------------------
void BaseApplication::createCamera(void)
{
// Create the camera
mCamera = mSceneMgr->createCamera("PlayerCam");
// Position it at 500 in Z direction
mCamera->setPosition(0,0,0);
// Look back along -Z
mCamera->lookAt(.5,0,.5);
mCamera->setNearClipDistance(.1f);
mCameraMan = new OgreBites::SdkCameraMan(mCamera); // create a default camera controller
}
//-------------------------------------------------------------------------------------
void BaseApplication::createFrameListener(void)
{
Ogre::LogManager::getSingletonPtr()->logMessage("*** Initializing OIS ***");
OIS::ParamList pl;
size_t windowHnd = 0;
std::ostringstream windowHndStr;
mWindow->getCustomAttribute("WINDOW", &windowHnd);
windowHndStr << windowHnd;
pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
mInputManager = OIS::InputManager::createInputSystem( pl );
mKeyboard = static_cast<OIS::Keyboard*>(mInputManager->createInputObject( OIS::OISKeyboard, true ));
mMouse = static_cast<OIS::Mouse*>(mInputManager->createInputObject( OIS::OISMouse, true ));
mMouse->setEventCallback(this);
mKeyboard->setEventCallback(this);
//Set initial mouse clipping size
windowResized(mWindow);
//Register as a Window listener
Ogre::WindowEventUtilities::addWindowEventListener(mWindow, this);
mTrayMgr = new OgreBites::SdkTrayManager("InterfaceName", mWindow, mMouse, this);
mTrayMgr->showFrameStats(OgreBites::TL_BOTTOMLEFT);
mTrayMgr->showLogo(OgreBites::TL_BOTTOMRIGHT);
mTrayMgr->hideCursor();
// create a params panel for displaying sample details
Ogre::StringVector items;
items.push_back("cam.pX");
items.push_back("cam.pY");
items.push_back("cam.pZ");
items.push_back("");
items.push_back("cam.oW");
items.push_back("cam.oX");
items.push_back("cam.oY");
items.push_back("cam.oZ");
items.push_back("");
items.push_back("Filtering");
items.push_back("Poly Mode");
mDetailsPanel = mTrayMgr->createParamsPanel(OgreBites::TL_NONE, "DetailsPanel", 200, items);
mDetailsPanel->setParamValue(9, "Bilinear");
mDetailsPanel->setParamValue(10, "Solid");
mDetailsPanel->hide();
mTrayMgr->adjustTrays();
mRoot->addFrameListener(this);
}
//-------------------------------------------------------------------------------------
void BaseApplication::destroyScene(void)
{
}
//-------------------------------------------------------------------------------------
void BaseApplication::createViewports(void)
{
// Create one viewport, entire window
Ogre::Viewport* vp = mWindow->addViewport(mCamera);
vp->setBackgroundColour(Ogre::ColourValue(0,.5,1));
// Alter the camera aspect ratio to match the viewport
mCamera->setAspectRatio(
Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight()));
}
//-------------------------------------------------------------------------------------
void BaseApplication::setupResources(void)
{
// Load resource paths from config file
Ogre::ConfigFile cf;
cf.load(mResourcesCfg);
// Go through all sections & settings in the file
Ogre::ConfigFile::SectionIterator seci = cf.getSectionIterator();
Ogre::String secName, typeName, archName;
while (seci.hasMoreElements())
{
secName = seci.peekNextKey();
Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext();
Ogre::ConfigFile::SettingsMultiMap::iterator i;
for (i = settings->begin(); i != settings->end(); ++i)
{
typeName = i->first;
archName = i->second;
Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
archName, typeName, secName);
}
}
}
//-------------------------------------------------------------------------------------
void BaseApplication::createResourceListener(void)
{
}
//-------------------------------------------------------------------------------------
void BaseApplication::loadResources(void)
{
Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
//Fix font loading bug
Ogre::FontManager::getSingleton().getByName("SdkTrays/Caption")->load();
}
//-------------------------------------------------------------------------------------
void BaseApplication::go(void)
{
#ifdef _DEBUG
mResourcesCfg = "resources_d.cfg";
mPluginsCfg = "plugins_d.cfg";
#else
mResourcesCfg = "resources.cfg";
mPluginsCfg = "plugins.cfg";
#endif
if (!setup())
return;
mRoot->startRendering();
// clean up
destroyScene();
}
//-------------------------------------------------------------------------------------
bool BaseApplication::setup(void)
{
mRoot = new Ogre::Root(mPluginsCfg);
setupResources();
bool carryOn = configure();
if (!carryOn) return false;
chooseSceneManager();
createCamera();
createViewports();
// Set default mipmap level (NB some APIs ignore this)
Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5);
// Create any resource listeners (for loading screens)
createResourceListener();
// Load resources
loadResources();
// Create the scene
createScene();
createFrameListener();
return true;
};
//-------------------------------------------------------------------------------------
bool BaseApplication::frameRenderingQueued(const Ogre::FrameEvent& evt)
{
if(mWindow->isClosed())
return false;
if(mShutDown)
return false;
//Need to capture/update each device
mKeyboard->capture();
mMouse->capture();
mTrayMgr->frameRenderingQueued(evt);
if (!mTrayMgr->isDialogVisible())
{
mCameraMan->frameRenderingQueued(evt); // if dialog isn't up, then update the camera
if (mDetailsPanel->isVisible()) // if details panel is visible, then update its contents
{
mDetailsPanel->setParamValue(0, Ogre::StringConverter::toString(mCamera->getDerivedPosition().x));
mDetailsPanel->setParamValue(1, Ogre::StringConverter::toString(mCamera->getDerivedPosition().y));
mDetailsPanel->setParamValue(2, Ogre::StringConverter::toString(mCamera->getDerivedPosition().z));
mDetailsPanel->setParamValue(4, Ogre::StringConverter::toString(mCamera->getDerivedOrientation().w));
mDetailsPanel->setParamValue(5, Ogre::StringConverter::toString(mCamera->getDerivedOrientation().x));
mDetailsPanel->setParamValue(6, Ogre::StringConverter::toString(mCamera->getDerivedOrientation().y));
mDetailsPanel->setParamValue(7, Ogre::StringConverter::toString(mCamera->getDerivedOrientation().z));
}
}
return true;
}
//-------------------------------------------------------------------------------------
bool BaseApplication::keyPressed( const OIS::KeyEvent &arg )
{
if (mTrayMgr->isDialogVisible()) return true; // don't process any more keys if dialog is up
if (arg.key == OIS::KC_F) // toggle visibility of advanced frame stats
{
mTrayMgr->toggleAdvancedFrameStats();
}
else if (arg.key == OIS::KC_G) // toggle visibility of even rarer debugging details
{
if (mDetailsPanel->getTrayLocation() == OgreBites::TL_NONE)
{
mTrayMgr->moveWidgetToTray(mDetailsPanel, OgreBites::TL_TOPRIGHT, 0);
mDetailsPanel->show();
}
else
{
mTrayMgr->removeWidgetFromTray(mDetailsPanel);
mDetailsPanel->hide();
}
}
else if (arg.key == OIS::KC_T) // cycle polygon rendering mode
{
Ogre::String newVal;
Ogre::TextureFilterOptions tfo;
unsigned int aniso;
switch (mDetailsPanel->getParamValue(9).asUTF8()[0])
{
case 'B':
newVal = "Trilinear";
tfo = Ogre::TFO_TRILINEAR;
aniso = 1;
break;
case 'T':
newVal = "Anisotropic";
tfo = Ogre::TFO_ANISOTROPIC;
aniso = 8;
break;
case 'A':
newVal = "None";
tfo = Ogre::TFO_NONE;
aniso = 1;
break;
default:
newVal = "Bilinear";
tfo = Ogre::TFO_BILINEAR;
aniso = 1;
}
Ogre::MaterialManager::getSingleton().setDefaultTextureFiltering(tfo);
Ogre::MaterialManager::getSingleton().setDefaultAnisotropy(aniso);
mDetailsPanel->setParamValue(9, newVal);
}
else if (arg.key == OIS::KC_R) // cycle polygon rendering mode
{
Ogre::String newVal;
Ogre::PolygonMode pm;
switch (mCamera->getPolygonMode())
{
case Ogre::PM_SOLID:
newVal = "Wireframe";
pm = Ogre::PM_WIREFRAME;
break;
case Ogre::PM_WIREFRAME:
newVal = "Points";
pm = Ogre::PM_POINTS;
break;
default:
newVal = "Solid";
pm = Ogre::PM_SOLID;
}
mCamera->setPolygonMode(pm);
mDetailsPanel->setParamValue(10, newVal);
}
else if(arg.key == OIS::KC_F5) // refresh all textures
{
Ogre::TextureManager::getSingleton().reloadAll();
}
else if (arg.key == OIS::KC_SYSRQ) // take a screenshot
{
mWindow->writeContentsToTimestampedFile("screenshot", ".jpg");
}
else if (arg.key == OIS::KC_ESCAPE)
{
mShutDown = true;
}
mCameraMan->injectKeyDown(arg);
return true;
}
bool BaseApplication::keyReleased( const OIS::KeyEvent &arg )
{
mCameraMan->injectKeyUp(arg);
return true;
}
bool BaseApplication::mouseMoved( const OIS::MouseEvent &arg )
{
if (mTrayMgr->injectMouseMove(arg)) return true;
mCameraMan->injectMouseMove(arg);
return true;
}
bool BaseApplication::mousePressed( const OIS::MouseEvent &arg, OIS::MouseButtonID id )
{
if (mTrayMgr->injectMouseDown(arg, id)) return true;
mCameraMan->injectMouseDown(arg, id);
return true;
}
bool BaseApplication::mouseReleased( const OIS::MouseEvent &arg, OIS::MouseButtonID id )
{
if (mTrayMgr->injectMouseUp(arg, id)) return true;
mCameraMan->injectMouseUp(arg, id);
return true;
}
//Adjust mouse clipping area
void BaseApplication::windowResized(Ogre::RenderWindow* rw)
{
unsigned int width, height, depth;
int left, top;
rw->getMetrics(width, height, depth, left, top);
const OIS::MouseState &ms = mMouse->getMouseState();
ms.width = width;
ms.height = height;
}
//Unattach OIS before window shutdown (very important under Linux)
void BaseApplication::windowClosed(Ogre::RenderWindow* rw)
{
//Only close for window that created OIS (the main window in these demos)
if( rw == mWindow )
{
if( mInputManager )
{
mInputManager->destroyInputObject( mMouse );
mInputManager->destroyInputObject( mKeyboard );
OIS::InputManager::destroyInputSystem(mInputManager);
mInputManager = 0;
}
}
}
TutorialApplication.cpp
Code: Select all
/*
-----------------------------------------------------------------------------
Filename: TutorialApplication.cpp
-----------------------------------------------------------------------------
This source file is part of the
___ __ __ _ _ _
/___\__ _ _ __ ___ / / /\ \ (_) | _(_)
// // _` | '__/ _ \ \ \/ \/ / | |/ / |
/ \_// (_| | | | __/ \ /\ /| | <| |
\___/ \__, |_| \___| \/ \/ |_|_|\_\_|
|___/
Tutorial Framework
http://www.ogre3d.org/tikiwiki/
-----------------------------------------------------------------------------
*/
#include "TutorialApplication.h"
#include "Ogre.h"
#include "OgreTerrainSceneManager.h"
using namespace Ogre;
//-------------------------------------------------------------------------------------
TutorialApplication::TutorialApplication(void)
{
}
//-------------------------------------------------------------------------------------
TutorialApplication::~TutorialApplication(void)
{
}
//-------------------------------------------------------------------------------------
void TutorialApplication::createScene(void)
{
//Load terrain
mSceneMgr->setWorldGeometry("defaulterrain.cfg");
//Load cube
SceneNode *cubeNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
Entity *cube = mSceneMgr->createEntity("cube.mesh");
cubeNode->attachObject(cube);
//Update cam pos
//mCamera->setPosition(0, ((TerrainSceneManager*)mSceneMgr)->getHeightAt(0, 0) + 4, 0);
}
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
#define WIN32_LEAN_AND_MEAN
#include "windows.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
#else
int main(int argc, char *argv[])
#endif
{
// Create application object
TutorialApplication app;
try {
app.go();
} catch( Ogre::Exception& e ) {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
#else
std::cerr << "An exception has occured: " <<
e.getFullDescription().c_str() << std::endl;
#endif
}
return 0;
}
#ifdef __cplusplus
}
#endif