Hi,

I’m new in this forum and I have never dealt with OpenGL.

It seems to be very powerful and I would like to use it for a scientific simulation of a satellite imaging system, but I’m not sure if the algorithms and numeric calculations are enough precise.

Is OpenGL suitable for this purpose? Why?

Thank you very much for your help!

Aureliana.

GL is just for rendering graphics. It can be used to run algorithms by using floating point buffers and readback and the float data, but it is better to use either CUDA or OpenCL (compute language) to run algorithms on a GPU.

OpenGL has floats and (slower) double datatypes. HiEnd GPUs support full IEEE float operations, BUT: the OpenGL specs give little guarantee about accuracy. For serious scientistic purposes OpenCL or CUDA might be a better way to go, even if those programs run on the same hardware.

the OpenGL specs give little guarantee about accuracy

I’d like to use it only to perform an orthographic projection of the digital elevation model. Does OpenGL give little guarantee also in the accuracy of the geometric projection?

I think it depends on the graphics hardware. If you pass OpenGL a double, it will just cast it to a float again,

if the underlining hardware doesn’t support double precision.

OpenGL can only be as accurate as the underlying hardware. If the hardware uses 16-bit floating point internally, then that’s what you’ll get; if it uses higher precision then you’ll also get higher precision, but in general you can’t rely on OpenGL alone for this kind of accuracy (what you can rely on it for is repeatability). OpenGL is also just intended for use with visualization; if you want to use OpenGL to visualize the results of a calculation (which may be done with higher precision elsewhere; e.g. a custom math library running on your CPU) then you’ve made a good choice. If you want to use OpenGL to actually do those calculations itself - not so good; that’s outside of the problem domain that OpenGL provides a solution for.

这个，我觉得吧，还是懂一些数学算法会更好点！