Hi Lainz!
There are three ways you can make the object look bigger.
By defining a smaller distance between the viewer and the object.
scene.Camera.ViewPoint := Point3D(0,0,-10);
(by default the Z view position is -100)
By making the object bigger by calling its Scale function.
By changing the zoom (note that it is multiplying the current value, not setting it directly). Note that once you set the zoom like that, you don't have the autozoom anymore. It means that if the surface is resized (for example becomes 800x600 instead of 640x480, then the zoom is not ajusted).
scene.Zoom := scene.Zoom*10;
To load the materials, before loading the object, call LoadMaterialsFromFile(...) function.
Note that if you have textures, the function FetchTexture must be overriden. It is up to you to decide how to store the images. To make it simple, you can simple keep an array of the textures as TBGLBitmap. And when the scene is destroyed, free all the textures. The scene object works with IBGRAScanner, so it does not know about the memory allocation or what type of bitmap it is.
Also, you could for example load the images from a stream, a zip file, etc. It does not need to be a file. Maybe it could be made easier to use. Just tell me your thoughts about it.
Note that in the example attached in your message, it uses TBGRAVirtualScreen, so it does not use OpenGL. To use OpenGL, you need a TBGLVirtualScreen and to call the RenderGL function.
About applying filters, it is not possible for now. I suppose it would be possible to do that using a framebuffer. I have not studied this question.