it’s so big, it’s hard to remember everything that’s changed!
here’s an initial pass at a changelog since 0062, in no particular order.
[list]
0062 core: 624KB, 49 files. 007 core: 1.12MB, 148 files. in other words, the core of OF has basically doubled.
the core addons ofxVectorMath, ofxThread, and ofxDirList have been turned into ofVectorMath, ofThread and ofDirectory
multiple versions of ofxShader, ofxVbo and ofxFbo have been brought into the core as ofShader, ofVbo, and ofFbo
ofPixels is now a fully-formed class that is used by a variety of classes
besides ofDirectory, ofFile and ofBuffer have also been added for working with the filesystem
android support
swappable rendering: you can render to opengl or cairo. cairo supports pdf output.
better gstreamer support on linux
new fps counting technique that works a little better across platforms
ofPixels and ofImage have getColor() which returns an ofColor, and setColor(x,y,ofColor)
slowly transitioning away from fmod toward openal for sound support
cross-platform file dialog and alert dialog, ofSystemAlertDialog(), ofSystemLoadDialog(), ofSystemSaveDialog()
ofSetOrientation() allows you to rotate the entire OF drawing space
working towards a sound synthesis addon, ofxSynth
ofColor has constants for basic colors, like ofColor::magenta
ofxAssimpModelLoader for loading a huge variety of 3d formats
ofEnableBlendMode() supports additive, subtractive, alpha, etc. blending
ofxThreadedImageLoader addon
ofMesh, ofVbo and ofVboMesh provide a clean interface for drawing, and for gpu-accelerated drawing
better iPhone video and camera support
ofNode is a new 3d node class with position and orientation that can be manipulated with methods like truck() and tilt()
ofCamera extends ofNode, is a new camera class for representing a camera position, orientation, and other parameters
ofEasyCam wraps ofCamera with automatic mouse binding that resembles processing’s PeasyCam
ofLight also extends ofNode, provides a simple interface for placing and describing opengl lighting
ofDrawBitmapString() has been massively refactored to support all the different 3d drawing cases you can imagine via ofSetDrawBitmapMode()
ofLog() now supports streaming, for example: ofLogVerbose() << “some message”;
ofPath and ofPolyline wraps all the 2d drawing functionality previously supported by OF, and adds more. ofPolyline has some new advanced methods like getResampledBySpacing(), getClosestPoint(), simplify()
ofColor finally adds HSB support. ofColor is always an RGB color, but you can get and set its hue, saturation and lightness via getHue()/setHue() etc. it also distinguishes lightness (value) from brightness. to create a color using HSB values, use ofColor::fromHsb(h,s,b,a). to set from hex, use ofColor::fromHex(hex)
ofBox and ofSphere draw the respective 3d shapes
a ton of conversion methods have been added: ofToHex, ofToBinary, ofToString, ofHexToInt, ofHexToFloat, etc. they’re all inside ofUtils.h
github-based, community-driven development is pretty much going full stream ahead
ofCircle(), ofRect(), etc all use vertex arrays now rather than glBegin()/end()
actually this was like that since 0061 at least, don’t remember exactly but it was added for the first iphone release.
also:
ofVideoGrabber, ofVideoPlayer, ofSoundPlayer and ofSoundStream use “swappable apis”
Linux has no dependencies with any not free library (FMOD mainly)
Cairo renderer also supports svg rendering, multipage (1 page per frame) and a initial 3D rendering system where 3D primitives are projected using the same projection matrix used for openGL before rendering them
ofSoundStream has been converted to an object oriented api, and now is possible to open several devices and choose which device you want to use.
ofTrueTypeFont, now generates a texture atlas when loading a font instead of a texture per char. It also has bind()/unbind() functions that allow to bind the texture only once to render several texts, making font rendering much faster.
ofTrueTypeFont getShapes uses ofPath
new ofTessellator class used internally in OF by ofPath and ofBegin/EndShape bassed on the tess2 library (with some modifications so it also works on openGL ES) which is faster and has a cleaner api than the previous one from GLU
openCV 2.2
ofColor, ofPixels and ofImage are now templated classes with support for 8bit, 16bit and 32bit and easy conversion between them using the = operator
ofApp*Window have been refactored so now all the common functionality is in ofEvents which makes easier to create new windows and mantain the current ones
easier registering of core events with the new ofRegister*Events functions
new logging system with support for << operator, logging per module, logging to file and logging channels which makes it easier to redirect the logging output
functions and classes to load online resources to memory or disk using http both synchronous and asynchronously
ofImage directly supports loading images from the web
ofxCvHaarFinder
ofSystemAlertDialog for alert dialogs
drag and drop support in applications (except in linux)
ofPtr for shared pointers, is actually std::tr1::shared_ptr and will be std::shared_ptr when c++11 is supported
all the classes with opengl resources have shallow copy + shared pointer semantics so textureA = textureB makes textureB point to the same texture in the graphics card as textureA, and the texture is released when the last copy is destroyed
all swappable api objects (ofVideoGrabber, ofvideoPlayer, ofSoundPlayer and ofSoundStream) have shallow copy + shared pointer semantics too
all memory structures (ofPixels, ofImage, ofBuffer, ofMesh…) have deep copy semantics, so pixelsA = pixelsB makes b a full new copy of pixelsA
generated with doxygen by underdoeg but since there’s almost no doxygen comments in the code by now it’s only a list of the available classes, methods…
now that ofxVectorMath is part of the core, ofPoint being an “ofVec3f” under the hood means there is tons more you can do with ofPoints and less conversions are necessary. Also, alot of the graphics functionality now takes points as another form of input:
thanks for all the additions, arturo! my list was mostly from what happened after ofdev-con, and now i remember there were a ton more changes that occurred after that.
does the shared pointer for gl resources really work? i tried making a vector of ofFbos yesterday and had a weird crash. i’d like to be able to write vector and vector though. if you’re convinced it should work, i’ll start a new thread.
kyle, yeah it should work, actually everything openGL uses reference counting instead of shared pointers but the behaviour should be the same except is not thread safe but being openGL it shouldn’t be a problem. so yes post in another thread, there could be a bug in the fbo
Is there a way to volunteer to help update/clean up the main oF.cc page? There are posts on the front page from 2009, we’re coming up on 2012 and while the openframeworks project is all exciting and vibrant on the inside, to a newcomer it might look a bit like we’ve all gone off somewhere else.
=D
Thank you all for all the effort you’ve put into this! I don’t even know where to begin with 0.07
I do have a question. I’ve noticed the oF site mentions this is a Release (not a Pre like a few weeks ago) and I tried out some stuff that used to work from a github 0.07 release of some time ago and it didn’t work. I’d like to know if this is the “Final” release of 0.07?
What did and didn’t work for me in the new release was the ofxKinect and ofxTriangle, and the reason for me asking this is because I’ve got a lot to learn about oF so I need some stability in the code… so I didn’t mean to be rude.
@irregular, the naming ‘release’ vs ‘prerelease’ is kind of haphazard. ‘prerelease’ means something like ‘pre-version-1.0’ but i think that’s kind of implied so i often just say ‘release’.
the version of 007 available via the OF website is the ‘final’ 007. it’s the version people should make their addons compatible with. it might take some time for people to update their addons though.
but I think it’s worthwhile to have as part of the repository.
in doing so, I noticed we didn’t do changes for 0.062 either, so I’ve just gone through them. it’s a very small compared to 007, but useful to see I think.
OF 0.062 Pre-release, changelog:
key:
= added
= subtracted
/ = modified
This is mostly minor changes, as it’s a maintenance release with small bug fixes a few extra features
and critical updates for Visual Studio 2010, Linux and iPhone developers.
/ altered framerate calculation
/ altered data path, adding ofSetDataPathRoot for OSX
/ ofSerial - bug fixes, including EAGAIN
ofGraphics - added universal functions to help control textures, such as “ofEnableNormalizedTexCoords()”
ofImage - setCompression code via SoSoLimited
ofTexture - added compression options, via SoSoLimited
/ ofSoundStream - bug fixes for audio clearning
/ ofConstants - switch some includes, for example, from <stdio.h> to
ofMath - added some functions to help with angle math, such as ofLerpDegrees, and ofAngleDifferenceDegrees
ofMath - added some polygon / polyline / line methods, such as ofInsidePoly and ofLineSegmentIntersectio