I need help creating a simple Delphi-based OpenGL engine. The requirements are:
- The basic principle is that it should be possible to add objects to the scene, and then render the scene as a output image.
- At the moment the only objects I need to add is 32-bit images. The alpha-channel of the images should be used.
- The parameters for each objects should be possible to change before each rendered frame.
- Parameters that I need to be able to set for each object are position (X, Y, Z), rotation (X, Y, Z), opacity (0-100 percent), scale (X, Y, Z).
- It must also be possible at anytime to change the image (with an image with a identical size) without re-creating the object.
- It should also be possible to change camera settings before rendering. At least position (X, Y, Z) and lens angle should be possible to set.
- As manipulation of images are the main thing, there are some things that is important: Images should be handled so that when all paramaters are at default values the image is rendered pixel-by-pixel to the target bitmap. Ie, a image of 100x100 pixels will still be 100x100 pixels when rendered. Unless there is any light added the image should appear identical to the input on the output.
- The ouput render should result in a 32 bitmap image of desired size (up to 1920x1080). It should be the result of all objects with the current properties, and with their alpha channels correctly combined. Render should not be done to screen, only to the image.
- Render should be done on the computers OpenGL graphic card, for fast render of complex scenes.
- Speed is the main focus - all actions has to be optimized for short execution time.
- It should be 100% delphi code, well commented and easy to modify and add functionality to.
- Values for position, scale and rotation should have a meaningful range, where the default is 0 (position and rotation) or 1 (scale).
Here are a pseduo code of how the engine should be used:
A: Init Scene
InitScene();
AddImage(AImage, ObjectID); // AImage = 32bit bitmap
AddImage(AImage, ObjectID); // AImage = 32bit bitmap
B: Render Loop
UpdateImage(ObjectID, NewImage); // New image = 32bit Bitmap
SetImagePosition(ObjectID, XPos, YPos, ZPos);
SetImageScale(ObjectID, XScale, YScale, ZScale);
SetImageOpacity(ObjectID, Opacity);
SetImageRotation(ObjectID, XRotate, YRotate, ZRotate);
SetCameraPosition(XPos, YPos, ZPos);
SetCameraAngle(Angle);
RenderFrame(TargetImage); // TargetImage = 32bit Bitmap
Please provide information on your experience with OpenGL and Delphi with your bid.
Ready to deliver it in 7 days. I have OGL experience with Delphi. But did you consider using Delphi OpenGl components like GLScene? It may be cheaper and faster.
I already have a ready made Delphi OpenGL engine available. I would estimate it involved about 100+ man hours of work. I used it as an engine for a 3D Editor I wrote last year.
The engine contains an Acyclic Scene Graph to manage 3d objects and 2d data (such as images), it handles texture mapping, shaders, loading of several model formats (including obj, 3ds), object translation...etc.
It covers every single requirement you listed on the project summary page except one:
the engine currently uses 3 object files generated by c code. This code is responsible for loading jpeg and png images. The zlib object files are also used (required by jpeg and png)
But I can remove that source code if you require.
Every other piece of code is in Delphi - even the other image format loaders (bmp and targa).
If you accept the bid, you are free to use the source code in any way you wish - even for resale.
I would also be available to answer questions about the engine.