-
Notifications
You must be signed in to change notification settings - Fork 436
/
changelog.dox
1633 lines (1487 loc) · 91.8 KB
/
changelog.dox
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
namespace Magnum {
/** @page changelog Changelog
@tableofcontents
See also:
- @subpage changelog-plugins
- @subpage changelog-integration
- @subpage changelog-extras
- @subpage changelog-examples
@section changelog-latest Changes since 2018.02
@subsection changelog-latest-dependencies Dependency changes
- Building for Android now requires CMake 3.7 with builtin Android
crosscompilation support, the old toolchains were removed. Only the Clang
and libc++ toolchain is now supported, support for GCC and libstdc++ was
dropped, as it was still missing some important C++11 functionality. See
@ref building-cross-android for more information.
@subsection changelog-latest-new New features
- Initial support for OpenGL ES 3.2 and OpenGL 4.6
- New OpenGL extension support:
- @extension{ARB,texture_filter_anisotropic}
- @extension{OES,texture_float}, @extension2{OES,texture_half_float,OES_texture_float}
- @extension{EXT,color_buffer_float},
@extension2{EXT,color_buffer_half_float,EXT_color_buffer_half_float}
and
their WebGL counterparts @webgl_extension{EXT,color_buffer_half_float},
@webgl_extension{WEBGL,color_buffer_float},
@webgl_extension{EXT,color_buffer_float}
- Ported @ref OpenGLTester to WebGL
@subsubsection changelog-latest-new-math Math library
- Added @ref Math::isInf(), @ref Math::isNan()
@subsubsection changelog-latest-new-platform Platform libraries
- Added @ref Platform::AndroidApplication::windowSize()
- Added @ref Platform::AndroidApplication::nativeActivity() to access
underlying `ANativeActivity` structure for calling various Android APIs
@subsubsection changelog-latest-new-primitives Primitives library
- New @ref Primitives::circle3DSolid(), @ref Primitives::circle3DWireframe(),
@ref Primitives::coneSolid(), @ref Primitives::coneWireframe(),
@ref Primitives::grid3DSolid() and @ref Primitives::grid3DWireframe()
primitives
@subsubsection changelog-latest-new-trade Trade library
- Debug output operator for @ref Trade::PhongMaterialData::Flag and
@ref Trade::PhongMaterialData::Flags
@subsection changelog-latest-buildsystem Build system
- All plugin interfaces now implement
@ref Corrade::PluginManager::AbstractPlugin::pluginSearchPaths() "pluginSearchPaths()"
for plugin directory autodetection --- you no longer need to specify the
plugin directory explicitly when loading plugins. See @ref plugins-loading
for more information.
- Plugins now provide an automatic means of static plugin import via CMake
targets, no need to call @ref CORRADE_PLUGIN_IMPORT() implicitly anymore.
For this to work, you just need to update local copies of all Find modules.
See @ref plugins-static for more information.
@subsection changelog-latest-bugfixes Bug fixes
- Engine startup info was not properly printed to Android log since
introducing the `--magnum-log` option in version 2018.02
- Working around Emscripten issue where `-s USE_PTHREADS=1` would cause all
shader sources containing Unicode characters to be truncated to empty
strings. See the @cpp "emscripten-pthreads-broken-unicode-shader-sources" @ce
workaround description for details.
- @ref Attribute::DataType::HalfFloat was not available on WebGL 2 by mistake
- A wrong code path for @ref Framebuffer::checkStatus() was selected on WebGL
1 by mistake
- Fixed `MAGNUM_PLUGINS_DIR` variables to contain proper absolute location by
default again.
@subsection changelog-latest-deprecated Deprecated APIs
- Class @cpp Primitives::Capsule2D @ce and @cpp Primitives::Capsule3D @ce is
deprecated, use @ref Primitives::capsule2DWireframe(),
@ref Primitives::capsule3DSolid() and @ref Primitives::capsule3DWireframe()
free functions instead
- Class @cpp Primitives::Circle @ce is deprecated, use
@ref Primitives::circle2DSolid() and @ref Primitives::circle2DWireframe()
instead
- Class @cpp Primitives::Crosshair2D @ce and @cpp Primitives::Crosshair3D @ce
is deprecated, use @ref Primitives::crosshair2D() and
@ref Primitives::crosshair3D() free function instead
- Class @cpp Primitives::Cube @ce is deprecated, use @ref Primitives::cubeSolid(),
@ref Primitives::cubeSolidStrip() and @ref Primitives::cubeWireframe() free
functions instead
- Class @cpp Primitives::Cylinder @ce is deprecated, use
@ref Primitives::cylinderSolid(), @ref Primitives::cylinderWireframe() free
functions instead
- Class @cpp Primitives::Icosphere @ce is deprecated, use the
@ref Primitives::icosphereSolid() free function instead
- Class @cpp Primitives::Plane @ce is deprecated, use
@ref Primitives::planeSolid() and @ref Primitives::planeWireframe() free
functions instead
- Class @cpp Primitives::Square @ce is deprecated, use
@ref Primitives::squareSolid() and @ref Primitives::squareWireframe() free
functions instead
- Class @cpp Primitives::UVSphere @ce is deprecated, use
@ref Primitives::uvSphereSolid() and @ref Primitives::uvSphereWireframe()
free functions instead
- @cpp Shaders::*Vector::setVectorTexture() @ce, @cpp Shaders::Flat::setTexture() @ce,
@cpp Shaders::Phong::setAmbientTexture() @ce, @cpp Shaders::Phong::setDiffuseTexture() @ce,
@cpp Shaders::Phong::setSpecularTexture() @ce and @cpp Shaders::Phong::setTextures() @ce
are deprecated because texture binding (a global state) is confused there
with uniform setup (a shader-local state). That can lead to accidental
state mismatches where a texture is forgotten to be rebound. Use
@ref Shaders::AbstractVector::bindVectorTexture() "Shaders::*Vector::bindVectorTexture()",
@ref Shaders::Flat::bindTexture(), @ref Shaders::Phong::bindAmbientTexture(),
@ref Shaders::Phong::bindDiffuseTexture(), @ref Shaders::Phong::bindSpecularTexture()
and @ref Shaders::Phong::bindTextures() instead.
@subsection changelog-latest-compatibility Potential compatibility breakages, removed APIs
- Removed the @cpp Buffer::Usage @ce enum that was deprecated in 2014.01, use
the global @ref BufferUsage enum instead
- Removed the `Magnum/Query.h` header that was deprecated in 2015.05, use one
of @ref Magnum/PrimitiveQuery.h, @ref Magnum/SampleQuery.h or
@ref Magnum/TimeQuery.h instead
- Removed ability to use @ref Buffer::Target as constructor or
@ref Buffer::setTargetHint() parameter that was deprecated in 2015.05, use
@ref Buffer::TargetHint instead
- Removed the @cpp SceneGraph::TransformationType @ce enum that was
deprecated in 2015.05, use separate `<transform>()` and `<transform>Local()`
variants instead
- Removed @cpp SceneGraph::AbstractObject::hasFeatures() @ce, @cpp firstFeature() @ce,
@cpp lastFeature() @ce, @cpp SceneGraph::Object::hasChildren() @ce,
@cpp firstChild() @ce and @cpp lastChild() @ce that were deprecated in
2015.05, use methods on linked list returned by
@ref SceneGraph::AbstractObject::features() and
@ref SceneGraph::Object::children() instead
- Removed @cpp Platform::ScreenedApplication::frontScreen() @ce and
@cpp Platform::ScreenedApplication::backScreen() @ce that were deprecated
in 2015.05, use methods on linked list returned by
@ref Platform::BasicScreenedApplication::screens() "Platform::ScreenedApplication::screens()"
instead
- Removed @ref Framebuffer::read() "*Framebuffer::read()" functions taking two
vectors that was deprecated in 2015.05, use overload taking @ref Range2Di
instead
- Removed the @cpp Mesh::maxVertexAttributes() @ce function that was
deprecated in 2015.05, use @ref AbstractShaderProgram::maxVertexAttributes()
instead
- Removed @cpp Math::Vector::dot() @ce, @cpp Math::Complex::dot() @ce,
@cpp Math::Quaternion::dot() @ce, @cpp Math::Vector::angle() @ce,
@cpp Math::Complex::angle() @ce, @cpp Math::Quaternion::angle() @ce,
@cpp Math::Quaternion::lerp() @ce, @cpp Math::Quaternion::slerp() @ce,
@cpp Math::Vector2::cross() @ce and @cpp Math::Vector3::cross() @ce that
were deprecated in 2015.05, use @ref Math::dot(), @ref Math::angle(),
@ref Math::lerp(), @ref Math::slerp() and @ref Math::cross() instead
- Removed @cpp *Framebuffer::bind(FramebufferTarget) @ce function that was
deprecated in 2%15.05, use parameter-less @ref Framebuffer::bind() "*Framebuffer::bind()"
instead
- Removed @cpp FramebufferTarget::ReadDraw @ce enum value that was deprecated
in 2015.05, use separate @cpp FramebufferTarget::Read @ce and
@cpp FramebufferTarget::Draw @ce values instead
- Removed @ref CubeMapTexture::imageSize() with explicit face parameter that
was deprecated in 2015.05, use overload that returns one value for all
faces instead
- Removed the `Magnum/DebugMessage.h` header that was deprecated in 2015.05,
use @ref Magnum/DebugOutput.h instead
- Removed the @cpp DebugMessage::Severity @ce enum that was deprecated in
2015.05, use @ref DebugOutput::Severity instead
- Removed @cpp DebugMessage::Callback @ce typedef, @cpp DebugMessage::setCallback() @ce
and @cpp DebugMessage::setDefaultCallback() @ce function that were
deprecated in 2015.05, use @ref DebugOutput::Callback,
@ref DebugOutput::setCallback() and @ref DebugOutput::setDefaultCallback()
instead
- Removed @cpp DebugMessage::maxLoggedMessages() @ce and
@cpp DebugMessage::maxMessageLength() @ce functions that were deprecated in
2015.05, use @ref DebugOutput::maxLoggedMessages() and
@ref DebugOutput::maxMessageLength() instead
- Removed @cpp DebugMessage::setEnabled() @ce function and related values
from @cpp DebugMessage::Source @ce enum that were deprecated in 2015.05,
use @ref DebugOutput::setEnabled() along with @ref DebugOutput::Source,
@ref DebugOutput::Type and @ref DebugOutput::Severity instead
- Removed parameter-less @cpp *Query @ce constructor and parametrized
@cpp *Query::begin() @ce function that were deprecated in 2015.05, use
constructor with parameter and parameter-less @ref Query::begin() "*Query::begin()"
instead
- Removed `Timeline::setMinimalFrameTime()` that was deprecated since June
2015, use @ref Platform::Sdl2Application::setSwapInterval() "Platform::*Application::setSwapInterval()"
and/or @ref Platform::Sdl2Application::setMinimalLoopPeriod() "Platform::*Application::setMinimalLoopPeriod()"
instead
- Removed `SceneGraph::Camera2D::setProjection()`,
`SceneGraph::Camera3D::setOrthographic()` and
`SceneGraph::Camera3D::setPerspective()` that were deprecated since June
2015, use @ref SceneGraph::Camera::setProjectionMatrix() in combination
with @ref Matrix3::projection(), @ref Matrix4::orthographicProjection() and
@ref Matrix4::perspectiveProjection() instead
- Removed `SceneGraph::AbstractCamera`, `SceneGraph::AbstractBasicCamera2D`,
`SceneGraph::AbstractBasicCamera3D`, `SceneGraph::AbstractCamera2D` and
`SceneGraph::AbstractCamera3D` that were deprecated since June 2015, use
@ref SceneGraph::Camera, @ref SceneGraph::BasicCamera2D,
@ref SceneGraph::BasicCamera3D, @ref SceneGraph::Camera2D and
@ref SceneGraph::Camera3D instead
- Removed `Math::Matrix::IdentityType`, `Math::Matrix::ZeroType`,
`Math::Matrix::Identity` and `Math::Matrix::Zero` that were deprecated
since June 2015, use the @ref Math::IdentityInit and @ref Math::ZeroInit
tags instead
- Removed `Magnum/ImageReference.h` header and `ImageReference` type that
were deprecated since July 2015, use @ref Magnum/ImageView.h and
@ref ImageView instead
- Removed `Magnum/Color.h` header and `BasicColor3` and `BasiColor4` types
that were deprecated since August 2015, use @ref Magnum/Math/Color.h,
@ref Math::Color3 and @ref Math::Color4 instead
- Removed `Magnum/ColorFormat.h` header and `ColorFormat` and `ColorType`
enums that were deprecated since August 2015, use
@ref Magnum/PixelFormat.h, @ref PixelFormat and @ref PixelType instead
- Removed @ref Image, @ref ImageView, @ref Trade::ImageData constructors,
@ref Image::setData() and @ref ImageView::setData() taking `void*` that
were deprecated since August 2015, use constructors and functions taking
@ref Corrade::Containers::Array / @ref Corrade::Containers::ArrayView
instead
@subsection changelog-latest-docs Documentation
- A new @ref developers page containing step-by-step checklists for
maintainers and core developers
- A new set of @ref platforms "platform-specific guides" containing extended
information that was previously scattered across @ref Platform application
class docs and elsewhere
- Completely reworked @ref platforms-android "Android building"
documentation, now using Gradle CMake integration instead of the outdated
and no longer supported Apache Ant workflow.
- The @ref Primitives namespace now has contains images visualizing how
each primitive looks
- Compiling majority of code snippets to ensure they don't get out of sync
with the code
@section changelog-2018-02 2018.02
Released 2018-02-15, tagged as
[v2018.02](https://github.com/mosra/magnum/releases/tag/v2018.02). See the
[release announcement](http://blog.magnum.graphics/announcements/2018.02/) for
a high-level overview.
@subsection changelog-2018-02-dependencies Dependency changes
- Completely removed NaCl support (see https://blog.chromium.org/2017/05/goodbye-pnacl-hello-webassembly.html,
[mosra/magnum#198](https://github.com/mosra/magnum/issues/198))
- Dropped support for the old MinGW32 (only MinGW-w64 is supported now) (see
[mosra/magnum#46](https://github.com/mosra/magnum/issues/46)
- Bumped minimal CMake version to 2.8.12
- Removed support for macOS 10.8 and older
- Dropped the `compatibility` branch and all support for MSVC 2013 and GCC <
4.7
@subsection changelog-2018-02-new New features
- MSVC 2015 and MSVC 2017 support in `master` branch (see
[mosra/magnum#96](https://github.com/mosra/magnum/issues/96),
[mosra/magnum#209](https://github.com/mosra/magnum/pull/209))
- ANGLE ES2/ES3 support, ability to create desktop GLES contexts on Windows
- Windows Phone/Store support via ANGLE
- iOS support (see [mosra/magnum#82](https://github.com/mosra/magnum/issues/82))
- WebAssembly support when building for Emscripten
- WebGL 2.0 support
- New OpenGL extension support:
- @extension{EXT,draw_buffers} ES2 extension
- @extension{EXT,sRGB_write_control} ES extension
- @extension{NV,polygon_mode} ES extension
- @extension{KHR,blend_equation_advanced},
@extension2{KHR,blend_equation_advanced_coherent,KHR_blend_equation_advanced}
desktop and ES extensions
- @extension{ANDROID,extension_pack_es31a} ES3 extension, which
includes:
- @extension{OES,texture_storage_multisample_2d_array}
- @extension{OES,texture_stencil8}
- @extension{EXT,texture_border_clamp}
- @extension{EXT,texture_cube_map_array}
- @extension{EXT,texture_buffer}
- @extension{EXT,geometry_shader}
- @extension{EXT,tessellation_shader}
- @extension{NV,shader_noperspective_interpolation} ES3 extension
- @extension{EXT,texture_compression_s3tc} desktop and ES extension,
@webgl_extension{WEBGL,compressed_texture_s3tc} WebGL extension
- @extension2{KHR,texture_compression_astc_ldr,KHR_texture_compression_astc_hdr},
@extension{KHR,texture_compression_astc_hdr} desktop and ES
extension
- @extension{EXT,unpack_subimage} and @extension{NV,pack_subimage}
ES2 extensions
- @extension{ARB,uniform_buffer_object} and its ES3/WebGL2
counterpart, except for data layout queries
- @extension{ARB,texture_barrier}
- @extension{ARB,shader_storage_buffer_object} and its ES3.1
counterpart
- @extension{ARB,compute_shader} and its ES3.1 counterpart
- @extension{ARB,shader_image_load_store} and its ES3.1 counterpart
- @extension{KHR,no_error} desktop and ES extension
- @extension{EXT,shader_framebuffer_fetch}, @extension{ARM,shader_framebuffer_fetch}
and @extension{ARM,shader_framebuffer_fetch_depth_stencil} (partial
support)
- @extension{ARB,transform_feedback2},
@extension{ARB,transform_feedback3},
@extension{AMD,transform_feedback3_lines_triangles},
@extension{ARB,transform_feedback_overflow_query} desktop extension
and their ES3 counterparts, if applicable
(see [mosra/magnum#53](https://github.com/mosra/magnum/issues/53))
- Compressed image support:
- Added @ref CompressedPixelFormat enum, @ref CompressedImage,
@ref CompressedImageView and @ref CompressedBufferImage classes
- Added @ref Texture::setCompressedImage() "*Texture::setCompressedImage()",
@ref Texture::setCompressedSubImage() "*Texture::setCompressedSubImage()"
and @ref Texture::compressedImage() "Texture::compressedImage()"
functions
- Added @ref Renderer::Hint::TextureCompression enum value
- Ability to pass arguments to engine startup via
@ref Context "command-line and environment variables":
- The engine now prints what driver workarounds are enabled and gives the
user an ability to disable them via `--magnum-disable-workarounds`
- It's possible to disable OpenGL extensions to work around driver bugs
using `--magnum-disable-extensions`
- It's possible to control amount of log output on engine startup via
`--magnum-log`
- Published OpenGL test setup code to a new @ref OpenGLTester library and
added GPU time benchmarking to it
- Added @ref PixelStorage class, tracking OpenGL pixel storage state and
applying it prior to read and upload of image data (see
[mosra/magnum#104](https://github.com/mosra/magnum/issues/104))
- Added @ref NoCreate tag to control initialization of GL object classes
- Added templated version of @ref Buffer::map() "Buffer::map*()" functions
- New `BUILD_MULTITHREADED` @ref cmake "CMake option" and a corresponding
@ref MAGNUM_BUILD_MULTITHREADED CMake variable and preprocessor define
- Added @ref Framebuffer::detach() as a conunterpart to all the
@ref Framebuffer::attachTexture() "attach*()" functions
- Added @ref Framebuffer::attachLayeredTexture() for layered texture
attachments
- Added @ref AbstractFramebuffer::clearDepth(), @ref AbstractFramebuffer::clearStencil(),
@ref AbstractFramebuffer::clearDepthStencil(), @ref DefaultFramebuffer::clearColor(),
@ref Framebuffer::clearColor()
- Added @ref BufferImage::release() "{Compressed,}BufferImage::release()" and
an ability to create @ref BufferImage "{Compressed,}BufferImage" from an
existing @ref Buffer
- New @ref Buffer::mapRead() convenience alternatives to @ref Buffer::map()
that return @cpp const @ce pointer and implicitly map as read-only
- Implemented @ref Renderer::setMemoryBarrier() and
@ref Renderer::setMemoryBarrierByRegion()
- Added @ref isVersionES() utility
- Added @ref Context::isCoreProfile()
- Added @ref TransformFeedback::maxVertexStreams() limit query
@subsubsection changelog-2018-02-new-audio Audio library
- Ported to Emscripten (see [mosra/magnum#216](https://github.com/mosra/magnum/pull/216)
- Added @ref Audio::Source::position(), @ref Audio::Source::velocity(),
@ref Audio::Source::isRelative(), @ref Audio::Source::gain(),
@ref Audio::Source::minGain(), @ref Audio::Source::maxGain(),
@ref Audio::Source::referenceDistance(), @ref Audio::Source::rolloffFactor(),
@ref Audio::Source::maxDistance(), @ref Audio::Source::direction(),
@ref Audio::Source::innerConeAngle(), @ref Audio::Source::outerConeAngle(),
@ref Audio::Source::outerConeGain(), @ref Audio::Source::pitch() getters
(see [mosra/magnum#107](https://github.com/mosra/magnum/pull/107))
- Added @ref Audio::Renderer::listenerPosition(), @ref Audio::Renderer::listenerOrientation(),
@ref Audio::Renderer::listenerVelocity(), @ref Audio::Renderer::listenerGain(),
@ref Audio::Renderer::dopplerFactor(), @ref Audio::Renderer::speedOfSound(),
@ref Audio::Renderer::distanceModel() getters (see
[mosra/magnum#107](https://github.com/mosra/magnum/pull/107))
- Added debug operator for @ref Audio::Renderer::DistanceModel
- Added @ref Audio::Playable, @ref Audio::Listener scene graph features and
@ref Audio::PlayableGroup feature group (see
[mosra/magnum#110](https://github.com/mosra/magnum/pull/110),
[mosra/magnum#116](https://github.com/mosra/magnum/pull/116))
- New namespace @ref Audio::Extensions for OpenAL extensions, similar to
@ref Extensions for OpenGL (see [mosra/magnum#111](https://github.com/mosra/magnum/pull/111))
- HRTF support through @ref Audio::Context::Configuration::setHrtf(),
@ref Audio::Context::isHrtfEnabled(), @ref Audio::Context::hrtfStatus()
(see [mosra/magnum#121](https://github.com/mosra/magnum/pull/121))
- Floating-point audio support in @ref Audio::Buffer
- @ref Audio::WavImporter "WavAudioImporter" plugin now supports more
formats, is more flexible and gives better errors (see
[mosra/magnum#174](https://github.com/mosra/magnum/issues/174),
[mosra/magnum#175](https://github.com/mosra/magnum/pull/175),
[mosra/magnum#176](https://github.com/mosra/magnum/pull/176),
[mosra/magnum#177](https://github.com/mosra/magnum/pull/177),
[mosra/magnum#179](https://github.com/mosra/magnum/pull/179))
- New @ref magnum-al-info "magnum-al-info" utility, available for all desktop
platforms and Emscripten
@subsubsection changelog-2018-02-new-debugtools DebugTools library
- Added @ref DebugTools::bufferData(), @ref DebugTools::bufferSubData()
and @ref DebugTools::textureSubImage() debugging helpers to emulate missing
functionality on OpenGL ES
- New @ref DebugTools::CompareImage class for fuzzy image comparison in
@ref Corrade::TestSuite
@subsubsection changelog-2018-02-new-math Math library
- New @ref Math::Bezier class for handling N-dimensional M-order Bézier
curves (see [mosra/magnum#165](https://github.com/mosra/magnum/pull/165))
- New @ref Math::Frustum class and @ref Math::Geometry::Intersection::pointFrustum(),
@ref Math::Geometry::Intersection::boxFrustum() functions (see
[mosra/magnum#185](https://github.com/mosra/magnum/pull/185)
- New @ref Math::Half class, @link Math::Literals::operator""_h @endlink
literal and @ref Math::packHalf() and @ref Math::unpackHalf() functions
- New @ref Math::Color3::fromSrgb(), @ref Math::Color3::toSrgb(),
@ref Math::Color4::fromSrgbAlpha(), @ref Math::Color4::toSrgbAlpha()
- 8-bit and float RGB, RGBA, sRGB and sRGBA literals in @ref Math::Literals
namespace
- Added @ref Math::Color3::fromXyz() "Math::Color*::fromXyz()",
@ref Math::Color3::toXyz() "Math::Color*::toXyz()", @ref Math::xyYToXyz()
and @ref Math::xyzToXyY()
- New @ref Math::pack() and @ref Math::unpack() functions for (un)packing
floats to an integral range with given number of bits
- Implemented @ref Math::sclerp() for dual quaternions (see
[mosra/magnum#114](https://github.com/mosra/magnum/pull/114),
[mosra/magnum#117](https://github.com/mosra/magnum/issues/117),
[mosra/magnum#118](https://github.com/mosra/magnum/pull/118),
[mosra/magnum#122](https://github.com/mosra/magnum/pull/122)
- Added @ref Math::sincos() for real and @ref Math::Dual numbers
- Added @ref Math::clamp() taking three vectors
- Added @ref Math::min() / @ref Math::max() taking a vector and a scalar
- Added @ref Math::min(), @ref Math::max() and @ref Math::minmax() for value
ranges (see [mosra/magnum#193](https://github.com/mosra/magnum/pull/193))
- Added @ref Math::pow(), @ref Math::log() and @ref Math::exp()
- Added @ref Math::Algorithms::qr(), @ref Math::Algorithms::gaussJordanInverted(),
@ref Math::Algorithms::kahanSum()
- Added @ref Math::Geometry::Distance::pointPlane(),
@ref Math::Geometry::Distance::pointPlaneScaled(),
@ref Math::Geometry::Distance::pointPlaneNormalized() functions
- Added @ref Math::Range::contains() and @ref Math::join() to join two ranges
- Ability to convert @ref Math::Complex, @ref Math::DualComplex,
@ref Math::Quaternion, @ref Math::DualQuaternion, @ref Math::Color3,
@ref Math::Color4 and @ref Math::Range classes from/to external
representation
- Ability to construct @ref Math::Dual, @ref Math::Complex and
@ref Math::Quaternion from a different underlying type
- Added @ref Math::ZeroInit, @ref Math::NoInit, @ref Math::IdentityInit tags
to control initialization of all math classes
- Added @ref Math::lerp(const Vector<size, T>&, const Vector<size, T>&, const BoolVector<size>&)
- Added @ref Math::Vector::flipped(), @ref Math::RectangularMatrix::flippedCols(),
@ref Math::RectangularMatrix::flippedRows()
- Added @ref Math::TypeTraits::name() and @ref Math::TypeTraits::equalsZero()
- Added @ref Math::RectangularMatrix::setRow()
- Ability to multiply and divide @ref Math::Dual with a real number
- Ability to access @ref Math::Dual members via reference
- Ability to construct @ref Math::DualQuaternion from dual vector and scalar
- Ability to save and restore @ref Deg and @ref Rad from
@ref Corrade::Utility::Configuration
- Explicit bool conversion for @ref Math::BoolVector (see
[mosra/magnum#182](https://github.com/mosra/magnum/issues/182))
- Component-wise comparison for @ref Math::RectangularMatrix
- Ability to construct @ref Math::RectangularMatrix and derived classes
with one value for all components
@subsubsection changelog-2018-02-new-platform Platform libraries
- New @ref Platform::GlfwApplication class (see
[mosra/magnum#141](https://github.com/mosra/magnum/pull/141),
[mosra/magnum#160](https://github.com/mosra/magnum/pull/160))
- Text input support in @ref Platform::Sdl2Application and
@ref Platform::GlfwApplication (see [mosra/magnum#129](https://github.com/mosra/magnum/issues/129))
- Added @ref Platform::WindowlessWindowsEglApplication and
@ref Platform::WindowlessIosApplication for ANGLE and iOS
- New @ref Platform::WindowlessEglApplication that works on headless NVidia,
Mesa drivers and Emscripten (see [mosra/magnum#133](https://github.com/mosra/magnum/pull/133))
- New @ref Platform::WindowlessGlxContext "Platform::Windowless*Context"
classes that manage OpenGL context to make threaded context creation
possible
- Ported @ref magnum-info "magnum-info" to Emscripten
- First-class support for scroll events in
@ref Platform::Sdl2Application::MouseScrollEvent (see
[mosra/magnum#157](https://github.com/mosra/magnum/pull/157))
- Added @ref Platform::Sdl2Application::MouseEvent::clickCount()
- Added @ref Platform::Sdl2Application::multiGestureEvent()
- Exposing key repeat in
@ref Platform::Sdl2Application::KeyEvent::isRepeated() "Platform::*Application::KeyEvent::isRepeated()"
(see [mosra/magnum#161](https://github.com/mosra/magnum/issues/161),
[mosra/magnum#162](https://github.com/mosra/magnum/pull/162))
- Added @ref Platform::Sdl2Application::setMinimalLoopPeriod(), which, along
with @ref Platform::Sdl2Application::setSwapInterval() replaces
@cpp Timeline::setMinimalFrameTime() @ce
- Added @ref Platform::Sdl2Application::window() and
@ref Platform::GlfwApplication::window() to access the underlying window
handle
- Added @ref Platform::Sdl2Application::tickEvent()
- Added @ref Platform::Context::tryCreate(), which allows the context to be
destructed and created again in case the version is not what the
application wants (as opposed to just aborting the application) (see
[mosra/magnum#105](https://github.com/mosra/magnum/issues/105))
- Added @ref Platform::Sdl2Application::Configuration::setSRGBCapable()
- Added @ref Platform::Sdl2Application::Configuration::WindowFlag::Borderless
and @ref Platform::Sdl2Application::Configuration::WindowFlag::AllowHighDpi
for iOS and macOS
- Added @ref Platform::WindowlessGlxApplication::Configuration::setFlags() "Platform::Windowless*Application::Configuration::setFlags()" with
@ref Platform::WindowlessGlxApplication::Configuration::Flag::Debug "Flag::Debug"
- @ref magnum-info now accepts `--short` and `--extension-strings` options
- Added @ref Platform::Sdl2Application::windowSize(),
@ref Platform::GlfwApplication::windowSize()
- Extended @ref Platform::Sdl2Application::KeyEvent::Key to be consistent
with @ref Platform::GlfwApplication
- Added modifier keys to
@ref Platform::Sdl2Application::KeyEvent::Key "Platform::*Application::KeyEvent::Key"
- Added @ref Platform::Sdl2Application::InputEvent::Modifier::Super to be
consistent with @ref Platform::GlfwApplication (see
[mosra/magnum#159](https://github.com/mosra/magnum/pull/159))
- Added @ref Platform::Sdl2Application::KeyEvent::keyName() "Platform::*Application::KeyEvent::keyName()"
- It's now possible to iterate main loop manually using
@ref Platform::Sdl2Application::mainLoopIteration()
- Ability to pass command-line arguments to Emscripten browser apps, see
@ref Platform::Sdl2Application and @ref Platform::WindowlessEglApplication
for more information
@subsubsection changelog-2018-02-new-primitives Primitives library
- New @ref Primitives::axis2D() and @ref Primitives::axis3D() primitives
@subsubsection changelog-2018-02-new-shaders Shaders library
- Ability to construct all @ref Shader classes without an OpenGL context
present using @ref NoCreate
@subsubsection changelog-2018-02-new-text Text library
- New @ref Text::AbstractFont::ascent() and @ref Text::AbstractFont::descent()
font properties
@subsubsection changelog-2018-02-new-trade Trade library
- New @ref magnum-imageconverter "magnum-imageconverter" utility
- Initial implementation of @ref Trade::CameraData and @ref Trade::LightData
- Vertex color support in @ref Trade::MeshData2D and @ref Trade::MeshData3D
- @ref Trade::AbstractImageConverter member functions were changed to
non-@cpp const @ce to make implementation of complex converter plugins possible
- New @ref Trade::AbstractImageConverter::exportToCompressedImage() plugin
interface and @ref Trade::AbstractImageConverter::exportToData(),
@ref Trade::AbstractImageConverter::exportToFile() taking
@ref CompressedImageView as a parameter
- Providing access to plugin manager in @ref Trade::AbstractImporter,
@ref Trade::AbstractImageConverter and @ref Audio::AbstractImporter plugin
APIs now have access to the plugin manager in order to be able to load
other plugins
- @ref Trade::ImageData now handles both compressed and uncompressed
images, @ref Trade::AbstractImageConverter is able to take it and then
delegate to proper function based on whether the image is commpressed or
not
- @ref Trade::AbstractImporter and all `Trade::*Data` classes now provide
member `importerState()` functions allowing the user to access
importer-specific state
- Added @ref Trade::AbstractImporter::openState() (see
[mosra/magnum#225](https://github.com/mosra/magnum/pull/225))
- @ref magnum-distancefieldconverter "magnum-distancefieldconverter" now uses
@ref Trade::AnyImageConverter "AnyImageConverter" by default
- @ref Trade::TgaImporter "TgaImporter" sets proper @ref PixelStorage
alignment if rows are not four-byte aligned
- @ref Trade::TgaImageConverter "TgaImageConverter" now properly handles
@ref PixelStorage parameters
@subsection changelog-2018-02-changes Changes and improvements
- Functionality that is not available on WebGL (like debug output etc.) is
not present in WebGL builds to reduce compiled code size
- The @ref Mesh class now stores a copy of @ref Buffer instance instead of
reference, meaning that you can move your buffers freely after assigning
them to a mesh
- @ref Texture::setStorage() "*Texture::setStorage()" fallback implementation
on OpenGL ES 2.0 and WebGL 1.0 now properly translates sized texture
formats to what the drivers expect (see [mosra/magnum#214](https://github.com/mosra/magnum/issues/214))
- @ref Trade::TgaImporter "TgaImporter" and @ref Trade::TgaImageConverter "TgaImageConverter"
now consistently use RGB(A) on all platforms and don't require BGR(A) on
desktop
- Ignoring @cpp "No errors." @ce message produced by GLSL compiler/linker on
Intel Windows drivers.
- @ref Texture::image() "*Texture::image()" and @ref Framebuffer::read() "*Framebuffer::read()"
now reallocate image data only if needed, for both @ref Image and
@ref BufferImage types
- R-value @ref Image "Image*" no longer restricts conversion to
@ref ImageView as it is a valid use case (for example passing output from
@ref Framebuffer::read() directly to @ref Trade::AbstractImageConverter::exportToFile())
- It's no longer possible to call @ref Image::data() "Image*::data()" on
r-value instances as that would cause accessing freed data. Use
@ref Image::release() instead.
- @ref Buffer::map() now returns @ref Corrade::Containers::ArrayView instead
of a plain pointer for better security
- Improved @ref Context::resetState() to better handle corner cases with VAOs
- Graceful handling of broken GL contexts
- Behavior of @ref Version::GLES200 and upwards on desktop OpenGL is changed
to request an ES dialect of GLSL when used in @ref Shader (instead of a
particular desktop GL version that supports given ES version), looks for
@extension{ARB,ES2_compatibility} and others (instead of checking for a
particular desktop GL version that supports given ES version)
- Binding some default VAO in case the engine is running on core profile with
@extension{ARB,vertex_array_object} disabled
- It's now possible to create @ref ImageView with @cpp nullptr @ce data (for
example for old-style texture allocation using @ref Texture::setImage())
- Various workarounds to make the engine working better on SVGA3D drivers
(VMWare guest)
- Various updates and code modernization (see
[mosra/magnum#200](https://github.com/mosra/magnum/pull/200))
@subsubsection changelog-2018-02-changes-math Math library
- @ref Double types are no longer restricted to just desktop GL builds, all
related types also work on ES and WebGL builds
- Default-constructed @ref Color4 has zero alpha now instead of fully opaque
black
- Proper implementation of @ref Math::Vector::isZero() for integers
- @ref Math::Matrix4::transformPoint() now properly uses the perspective
divide from projection matrices
- Updated @ref Math::TypeTraits fuzzy comparison epsilon values for
@cpp long double @ce and @cpp double @ce
- @ref Math::Matrix4::perspectiveProjection() now supports infinite far plane
- @ref Math::pow() now works for both vectors and scalars
- @ref Math::Vector::minmax() now works on arbitrary vectors instead of just
@ref Math::Vector2
@subsubsection changelog-2018-02-changes-platform Platform library
- Requesting core OpenGL context by default in @ref Platform::WindowlessGlxApplication
and @ref Platform::Sdl2Application. On binary NVidia, AMD and Windows Intel
drivers this causes the context to be stuck on OpenGL 3.1, in which case
the context is destroyed and old-style forward-compatible context is
requested instead.
- @ref Platform::Sdl2Application now leaves windows positioning on the system
instead of forcing the window to be centered
- @ref Platform::Sdl2Application now shows the window only once the GL
context is fully created to avoid flickering
@subsubsection changelog-2018-02-changes-shaders Shaders library
- @ref Shaders::Flat now sets default color to white only in textured version
- @ref Shaders::Phong gained the ability to have both color and texture
- @ref Shaders::Phong is now able to do alpha-masking (see
[mosra/magnum#112](https://github.com/mosra/magnum/issues/112),
[mosra/magnum-examples#29](https://github.com/mosra/magnum-examples/issues/29))
@subsection changelog-2018-02-buildsystem Build system
- Continuous testing for Linux, macOS, Windows MSVC, Windows MinGW, Windows RT,
iOS, Android and Emscripten on [Travis CI](https://travis-ci.org/mosra/magnum)
and [AppVeyor CI](https://ci.appveyor.com/project/mosra/magnum), with code
coverage on [codecov.io](https://codecov.io/gh/mosra/magnum); replacing the
unmaintained and outdated Jenkins configuration (see
[mosra/magnum#99](https://github.com/mosra/magnum/issues/99),
[mosra/magnum#120](https://github.com/mosra/magnum/pull/120),
[mosra/magnum#142](https://github.com/mosra/magnum/pull/142),
[mosra/magnum#203](https://github.com/mosra/magnum/pull/203))
- Support for CMake subprojects. You can now clone Magnum into a subdirectory
in your project and add it using @cmake add_subdirectory() @ce. The
@cmake find_package() @ce command will then use the CMake subproject
instead of looking for it in system-wide locations. See
[mosra/magnum#49](https://github.com/mosra/magnum/issues/49).
[mosra/magnum#140](https://github.com/mosra/magnum/issues/140).
- Reworked CMake buildsystem to use the new imported target workflow, see
@ref cmake for more information (see
[mosra/magnum#103](https://github.com/mosra/magnum/issues/103))
- CMake targets are now organized in folders for better development
experience in IDEs such as Visual Studio or Xcode
- Added @ref building-packages-brew "Homebrew package"
- Improvements and dependency updates to the
@ref building-packages-deb "Debian package" (see
[mosra/magnum#119](https://github.com/mosra/magnum/issues/119))
- Ability to build OpenGL tests also on Windows and macOS (see `BUILD_GL_TESTS`
@ref building-features "CMake option")
- Ability to override the implicit plugin directory using a
`MAGNUM_PLUGINS_DIR` CMake cache variable
- Ability to override deploy directory (used for example by Emscripten) using
a `MAGNUM_DEPLOY_PREFIX` CMake cache variable
- Better handling of compiled-in resources in static build. You don't need to
manually register resources when using Shaders library in static builds
(see [mosra/magnum-examples#9](https://github.com/mosra/magnum-examples/issues/9))
- `MACOSX_RPATH` is now enabled by default on CMake 3.0+ (see
[mosra/magnum#126](https://github.com/mosra/magnum/pull/126)
- Enabling only C++ in CMake @cmake project() @ce call, if possible, to speed
up initial CMake run
- Windowless application libraries now make use of the `BUILD_STATIC_PIC`
@ref cmake "CMake option"
- Fixed `FindSDL2.cmake` module to work out-of-the-box on Windows and macOS
(see [mosra/magnum#166](https://github.com/mosra/magnum/pull/166))
- Fixed `FindSDL2.cmake` to link to EGL when targeting GLES (see
[mosra/magnum-examples#9](https://github.com/mosra/magnum-examples/issues/9))
- Bundling a patched version of `FindOpenAL.cmake` to make it working on
Emscripten
@subsection changelog-2018-02-bugfixes Bug fixes
- Wrapping mode for @ref CubeMapTexture is now correctly two-dimensional
instead of three-dimensional, wrapping mode for @ref Texture2DArray "TextureNDArray"
is now correctly N-dimensional instead of N+1
- Fixed WebGL context creation on Internet Explorer, it claims to have
version 0.94
- Fixed random browser-specific issues by avoiding the use of XHTML in
Emscripten builds
- @ref Trade::ObjImporter "ObjImporter" plugin now opens the files as binary
to avoid line ending issues
- Various compatibility updates to the @ref Shaders library
- Updates to OpenGL tests to work better on non-NVidia cards
- Various fixes for OpenGL object label queries on AMD drivers
- Fixed @ref TextureTools::distanceField() on 3.0 <= GL < 3.2
- Fixed driver crash on AMD with @ref TextureTools::distanceField()
- @ref Framebuffer::attachCubeMapTexture() incorrectly behaved as a layered
attachment (see [mosra/magnum#123](https://github.com/mosra/magnum/issues/123))
- Fixed object label queries using the @extension{EXT,debug_label}
extension
- @extension{EXT,direct_state_access} function was accidentally used in
@extension{ARB,direct_state_access} code path, causing crashes on Mesa
- Properly export @ref Framebuffer::DrawAttachment to avoid linker failures
on Windows
- Fixed @ref Framebuffer attachments on GLES2 drivers w/o separate read/draw
bindings (see [mosra/magnum#204](https://github.com/mosra/magnum/issues/204))
- Fixed @ref Framebuffer binding on WebGL (see
[mosra/magnum#134](https://github.com/mosra/magnum/pull/134))
- On Emscripten, @ref Platform::Sdl2Application was by default rendering a
800x600 canvas to an area of 640x480 pixels, causing severe aliasing.
Canvas is now by default sized to 640x480 to match the default CSS style.
- @ref Platform::WindowlessWglApplication is fixed to allow the GL context to
be created and destroyed multiple times during application run
- @ref SceneGraph::Camera now works properly with @ref Double underlying type
- It's now possible to delete a running @ref SceneGraph::Animable
- @ref Text::AbstractLayouter has now a virtual destructor to avoid leaking
its subclasses
- Fixed @ref Trade::ObjImporter on Android
- Fixed assertion when using @ref DebugTools::ObjectRenderer
- Fixed appearance of @ref Primitives::Cylinder::solid() and
@ref Primitives::Circle::solid() (see [mosra/magnum#197](https://github.com/mosra/magnum/pull/197),
[mosra/magnum#220](https://github.com/mosra/magnum/pull/220))
- Fixed a possible OOB access when reading @ref Math::Vector /
@ref Math::RectangularMatrix from @ref Corrade::Utility::Configuration
- Fixed unfortunate interaction of VAOs and index buffers on platforms
without direct state access
- Fixed resetting a bit in @ref Math::BoolVector::set() (see
[mosra/magnum#208](https://github.com/mosra/magnum/issues/208),
[mosra/magnum#
- @ref Audio::Context::hrtfSpecifierString() was crashing on systems
supporting only @alc_extension{SOFTX,HRTF} and not @alc_extension{SOFT,HRTF}
- Fixed bad interaction of builtin OpenGL headers and Qt on macOS (see
[mosra/magnum#212](https://github.com/mosra/magnum/issues/212))
- Fixed building for Android with standard build systems (see
[mosra/magnum#131](https://github.com/mosra/magnum/issues/131))
- Fixed building of WGL context library (see
[mosra/magnum#137](https://github.com/mosra/magnum/pull/137))
- Various compilation warning/error fixes on various compilers (see
[mosra/magnum#100](https://github.com/mosra/magnum/issues/100),
[mosra/magnum#109](https://github.com/mosra/magnum/issues/109),
[mosra/magnum#138](https://github.com/mosra/magnum/pull/138),
[mosra/magnum#189](https://github.com/mosra/magnum/issues/189),
[mosra/magnum#190](https://github.com/mosra/magnum/pull/190))
@subsection changelog-2018-02-deprecated Deprecated APIs
- `Timeline::setMinimalFrameTime()` is deprecated, use
@ref Platform::Sdl2Application::setSwapInterval() "Platform::*Application::setSwapInterval()"
and/or @ref Platform::Sdl2Application::setMinimalLoopPeriod() "Platform::*Application::setMinimalLoopPeriod()"
instead
- `SceneGraph::Camera2D::setProjection()`,
`SceneGraph::Camera3D::setOrthographic()` and
`SceneGraph::Camera3D::setPerspective()` are deprecated, use
@ref SceneGraph::Camera::setProjectionMatrix() in combination with
@ref Matrix3::projection(), @ref Matrix4::orthographicProjection() and
@ref Matrix4::perspectiveProjection() instead
- `SceneGraph::AbstractCamera`, `SceneGraph::AbstractBasicCamera2D`,
`SceneGraph::AbstractBasicCamera3D`, `SceneGraph::AbstractCamera2D` and
`SceneGraph::AbstractCamera3D` are deprecated, use @ref SceneGraph::Camera,
@ref SceneGraph::BasicCamera2D, @ref SceneGraph::BasicCamera3D,
@ref SceneGraph::Camera2D and @ref SceneGraph::Camera3D instead
- `Math::Matrix::IdentityType`, `Math::Matrix::ZeroType`,
`Math::Matrix::Identity` and `Math::Matrix::Zero` are deprecated, use the
new @ref Math::IdentityInit and @ref Math::ZeroInit tags instead
- `AbstractShaderProgram::setUniform(Int, UnsignedInt, const T*)` is
deprecated, use @ref AbstractShaderProgram::setUniform(Int, Containers::ArrayView<const Float>) "AbstractShaderProgram::setUniform(Int, Containers::ArrayView<const T>)"
instead
- `Magnum/ImageReference.h` header and `ImageReference` type is deprecated,
use @ref Magnum/ImageView.h and @ref ImageView instead
- `Magnum/Color.h` header and `BasicColor3` and `BasiColor4` types are
deprecated, use @ref Magnum/Math/Color.h, @ref Math::Color3 and
@ref Math::Color4 instead
- `Magnum/ColorFormat.h` header and `ColorFormat` and `ColorType` enums are
deprecated, use @ref Magnum/PixelFormat.h, @ref PixelFormat and @ref PixelType
instead
- @ref Image, @ref ImageView, @ref Trade::ImageData constructors, @ref Image::setData()
and @ref ImageView::setData() taking `void*` are deprecated, use
constructors and functions taking @ref Corrade::Containers::Array /
@ref Corrade::Containers::ArrayView instead
- Templated @ref Buffer::data(), @ref Buffer::subData() and
@ref Buffer::map() are deprecated, use the non-templated versions in
combination with @ref Corrade::Containers::arrayCast() instead (see
[mosra/magnum#213](https://github.com/mosra/magnum/issues/213))
- `CubeMapTexture::Coordinate` enum is deprecated, use @ref CubeMapCoordinate
instead
- @ref Context::current() and @ref Audio::Context::current() returning a
pointer is deprecated, it's returning a reference now and asserts that a
context exists. Use @ref Context::hasCurrent() and @ref Audio::Context::hasCurrent()
to check for context presence.
- Angle literals available directly in the @ref Magnum namespace are
deprecated, import the @ref Math::Literals namespace instead
- `Platform::Sdl2Application::MouseEvent::Button::WheelUp`,
`Platform::Sdl2Application::MouseEvent::Button::WheelDown`,
`Platform::GlfwApplication::MouseEvent::Button::WheelUp` and
`Platform::GlfwApplication::MouseEvent::Button::WheelDown` mouse events are
deprecated, use @ref Platform::Sdl2Application::mouseScrollEvent() /
@ref Platform::GlfwApplication::mouseScrollEvent() and
@ref Platform::Sdl2Application::MouseScrollEvent /
@ref Platform::GlfwApplication::MouseScrollEvent instead
- @ref Platform::Sdl2Application::Sdl2Application() "Platform::*Application::*Application()"
and @ref Platform::WindowlessGlxApplication::WindowlessGlxApplication() "Platform::Windowless*Application::Windowless*Application()"
constructors taking @cpp nullptr @ce are deprecated, use constructors
taking @ref NoCreateT instead to create an application without creating
OpenGL context
- `Math::Color*::fromHSV()` and `Math::Color*::toHSV()` are deprecated, use
@ref Math::Color3::fromHsv() "Math::Color*::fromHsv()" and
@ref Math::Color3::toHsv() "Math::Color*::toHsv()" instead
- `Math::normalize()` and `Math::denormalize()` had confusing naming and thus
are deprecated, use @ref Math::pack() and @ref Math::unpack() from the
@ref Magnum/Math/Packing.h header instead
- @ref Trade::MeshData2D and @ref Trade::MeshData3D constructors without the
`colors` parameter are deprecated, use the full ones instead
- @ref Shaders::Generic::Color vertex attribute implicit constructor is
deprecated, use a constructor with explicit component count instead
- The bundled `std::optional` implementation was causing serious conflicts
with C++17 and it's now deprecated in favor of
@ref Corrade::Containers::Optional.
(Deprecated) aliases and conversion operators are provided for backwards
compatibility.
- `Audio::Context::hrtfSpecifier()` is deprecated, use
@ref Audio::Context::hrtfSpecifierString() instead
@subsection changelog-2018-02-compatibility Potential compatibility breakages, removed APIs
- The @ref Math::Geometry::Distance and @ref Math::Geometry::Intersection
classes are now a namespace (might break `using` declarations, but
otherwise it's fully source-compatible)
- Removed `Context::majorVersion()` and `Context::minorVersion()` functions,
use @ref Context::version() instead
- Removed deprecated `Magnum/DebugMarker.h` header, use
@ref Magnum/DebugOutput.h and @ref DebugMessage class instead
- Removed deprecated `*Buffer` values from @ref FramebufferBlit, use values
without the `Buffer` suffix
- Removed deprecated list-argument functions taking pointers from @ref Audio
and @ref SceneGraph libraries, use lists of references instead
- Removed deprecated texture unit enums from @ref Shaders library, use
dedicated texture setters instead
- Removed deprecated `*Texture::maxLayers()` functions, use
@ref Shader::maxCombinedTextureImageUnits() instead
- Removed deprecated @ref MeshTools::combineIndexedArrays(),
@ref MeshTools::compressIndices(), @ref MeshTools::interleave() and
@ref MeshTools::removeDuplicates() overloads, use the general ones instead
- Removed deprecated `Mesh*::set*{Range,Count}()` functions, use
@ref Mesh::setCount() "Mesh*::setCount()" and @ref MeshView::setIndexRange()
instead
- Removed deprecated parameterless @ref Mesh::draw() "Mesh*::draw()"
overload, use the one with explicit shader parameter instead
- Removed deprecated `Context::Flag::Robustness` enum value, use
@ref Context::Flag::RobustAccess instead
- Removed deprecated `Texture::Target` enum, use dedicated @ref Texture,
@ref TextureArray, @ref RectangleTexture and @ref MultisampleTexture
classes instead
- Removed deprecated @ref Resource conversion operator, use explicit
conversion instead
- Removed deprecated `Framebuffer::attachTexture*D()` overloads, use one of
@ref Framebuffer::attachTexture() or @ref Framebuffer::attachTextureLayer()
overloads instead.
- Removed `SceneGraph::Camera3D::near()` and `SceneGraph::Camera3D::far()`
getters, because they can't be provided anymore with current more general
implementation. THe user is advised to cache the values on application side
if they are really needed.
- Removed `AbstractImage` class and `Magnum/AbstractImage.h` header, its
functionality is present in the @ref Image "Image*" classes directly
- Removed `Image::dataSize()` function as it has ambiguous meaning in regards
to recently added features, use @ref Image::dataProperties() "Image::dataProperties()"
instead
- The `FindGLFW.cmake` now prefers absolute includes (i.e. `GLFW/glfw3.h`
instead of just `glfw3.h`). The @ref Platform::GlfwApplication now depends
on this, so be sure to update your copy to avoid build issues.
@subsection changelog-2018-02-performance Performance improvements
- Reduced size of and number of allocations in @ref Mesh class.
@subsection changelog-2018-02-docs Documentation
- New documentation theme powered by [m.css](http://mcss.mosra.cz) and
related massive updates of *everything* (see
[mosra/magnum#113](https://github.com/mosra/magnum/issues/113))
- Explicit list of extensions that are available in WebGL builds
- New page explaining @ref opengl-wrapping "OpenGL wrapper layer"
- Documented extra CMake modules in @ref cmake-modules
- The @ref building documentation now prefers package installation instead of
manual build
- Clarified behavior of @ref Math::Matrix4::lookAt() (see
[mosra/magnum#127](https://github.com/mosra/magnum/issues/127))
- Documented how to use Vcpkg packages
- Updated links to OpenGL API documentation (see
[mosra/magnum#196](https://github.com/mosra/magnum/pull/196)
- Various other documentation updates (see
[mosra/magnum#94](https://github.com/mosra/magnum/pull/94),
[mosra/magnum#135](https://github.com/mosra/magnum/pull/135),
[mosra/magnum#170](https://github.com/mosra/magnum/issues/170),
[mosra/magnum-plugins#17](https://github.com/mosra/magnum-plugins/issues/17))
@section changelog-2015-05 2015.05
Released 2015-05-09, tagged as
[v2015.05](https://github.com/mosra/magnum/releases/tag/v2015.05). See the
[release announcement](http://blog.magnum.graphics/announcements/may-2015-updates/)
for a high-level overview.
@subsection changelog-2015-05-new New features
- Proper extension loading for OpenGL ES 2.0, 3.0 and 3.1 using flextGL.
- Enabled already implemented functionality on OpenGL ES 3.1.
- Support for new OpenGL functionality:
- Support for @extension{ARB,direct_state_acccess} (OpenGL 4.5)
everywhere except in Mesh.
- Support for @extension{ARB,conditional_render_inverted} (OpenGL
4.5) in @ref SampleQuery.
- Support for @extension{ARB,get_texture_sub_image} (OpenGL 4.5) in
@ref Texture::subImage() "*Texture::subImage()".
- Support for @extension{EXT,transform_feedback},
@extension{ARB,transform_feedback2} (OpenGL 3.0, 4.0, OpenGL ES 3.0) in
new @ref TransformFeedback class, added
@ref Renderer::Feature::RasterizerDiscard.
- Support for @extension{ARB,robustness_isolation} in
@ref Renderer::graphicsResetStatus().
- Support for @extension{ARB,framebuffer_sRGB} (OpenGL 3.0) in
@ref Renderer::Feature::FramebufferSRGB.
- Support for @extension{OES,texture_npot} ES extension.
- Support for debug groups from @extension{KHR,debug} (OpenGL 4.5) and
@extension{EXT,debug_marker} extensions in @ref DebugGroup class.
- Added @ref CubeMapTexture::image() "CubeMapTexture::*image()" that
returns all six faces together.
- Added @ref Primitives::Cube::solidStrip().
- Added @ref AbstractShaderProgram::attachShaders() as a list-based
complement to @ref Shader::compile() and
@ref AbstractShaderProgram::link().
- Separated @cpp Renderer::setFeature() @ce into shorter
@ref Renderer::enable() and @ref Renderer::disable().
- Added @cpp tau() @ce, @cpp piHalf() @ce, @cpp e() @ce, @cpp nan() @ce and
@cpp inf() @ce to @ref Math::Constants.
- Added @ref Math::Matrix4::shearingXY() "Math::Matrix[34]::shearing*()".
- Added @ref Math::Matrix4::lookAt() (see [mosra/magnum#88](https://github.com/mosra/magnum/issues/88)).
- Added @ref Math::Vector::pad().
- Added @ref Math::div().
- Using range-based-for to traverse object children and features in
@ref SceneGraph and screens in @ref Platform::BasicScreenedApplication "Platform::ScreenedApplication".
- Convenience overload for @ref Framebuffer::read() "*Framebuffer::read()"
and @ref Texture::image() "*Texture::image()" that returns the queried
image by value instead of as parameter.
- Added @ref Buffer::uniformOffsetAlignment() and
@ref Mesh::maxElementIndex() limit queries.
- Added @ref AbstractTexture::unbind() for unbinding range of texture
units.
- Added @ref SceneGraph::AbstractObject::addFeature() and
@ref SceneGraph::Object::addChild() functions (see [mosra/magnum#86](https://github.com/mosra/magnum/issues/86)).
- VSync support in @ref Platform::Sdl2Application.
- Added `Platform::*Context` libraries for users which want to use custom
windowing toolkits instead of the ones provided.
- Improved documentation about @ref Shaders namespace, added sample image
for each.
@subsection changelog-2015-05-changes Changes
- Using [flextGL](https://github.com/ginkgo/flextgl) instead of `glLoadGen`
for OpenGL extension loading
- @ref Platform::Sdl2Application now tries to create core context on all
platforms, not just OSX (see [mosra/magnum#80](https://github.com/mosra/magnum/issues/80)).
- @ref Buffer::bind(), @ref Buffer::unbind() and @ref Buffer::Target is
now used for indexed buffer binding only.
- Moved static binary operations from @ref Math classes into free functions
for more convenient usage (see [mosra/magnum#74](https://github.com/mosra/magnum/issues/74)).
- Better algorithm for comparing floating-point values.