Does OpenFrameworks support double point precision for drawing and 32 bit colors?

Hello, just a quick question.

The author of the below article outlines why he switched from Processing over to OPENRNDR. His projects use double point precision and 32 bit colors, which are not supported by Processing.

For my next project which I am currently prototyping in another language I also have these requirements.

Is it possible in OpenFrameworks?

I’m not familiar with Processing but the blog post drifts from a “float vs double” discussion to “colours are represented by 8 bits values” (which is the default case in OF but the pixel type can be something else). so the author evokes a halo of legitimate issues about resolution revealed by actual concrete/applied results but is not clearly articulated about a specific problem, which makes it difficult to assess the methodology in place as it may be based on anecdotical observations stemming from the user’s implementations.

in terms of your requirements, more info about them is required to properly confirm, but OF/C++ should supports as much resolution as you need (both in practical means such as loading .exr files into ofImages, and “programming means” where the ofFbo/Texture/etc support GL_RGBA32F (and GL_RGBA32UI if density linearity is a concern and/or you need deterministic control over rasterization)).

(and colour me surprised to learn that Processing does not have a form of >8bit colour support!?)

Hi! This is from memory, so anyone correct me if I’m wrong.

Regarding 32 bit images, you need to work with 32F fbos, ofFloatImage, etc., and if you want to save you need to do so in TIFF. That used to be the only format in FreeImage that supported 32, I don’t know if it’s still the case.

Sadly you won’t be able to render in HDR since GLFW doesn’t have support, yet. At least you’ll see less color banding.

Regarding using double precision, you can store your data in ofmesh, buffer objects and so on, but I believe all the shaders in OF are float precision. Therefore you’ll need to code your own.