Giter Club home page Giter Club logo

Comments (50)

Relfos avatar Relfos commented on August 28, 2024

Hi, the engine is perfectly usable (I even have a PC game in Steam that
uses it).
However the engine got a major refactor in the last months, not all samples
were ported yet, thats why they not compile, because many units/classes
changed names or got split into different classes.
There's another branch called old_master were those samples can be compiled.

The most important samples are all working in the master branch though
(sprites, GUI, input, mesh rendering etc), but if there's a specific sample
you need tell me and I'll port it to the master branch.

On Sun, Nov 1, 2015 at 3:32 PM, TSGer2015 [email protected] wrote:

Hi,
i tried to compile your samples in 3D and many of them not compiling,
missing units like TERRA_UI or TERRA_Scene, or TERRA_SpriteManager.

  • billboard_simple.dpr
  • color_grading.dpr unknown proptery SpriteRenderer in object
    TERRAViewport
  • mesh_ik.dpr missing unit TERRA_UI and more
  • mesh_smoothing.dpr missing unit TERRA_UI and more
  • outline_simple.dpr missing unit TERRA_UI and more ....

I checkout master branch, "TERRA-Engine-master.zip".

It seems to be a nice engine but not usable at moment.

Best regards
Thomas

PS: sorry for bad english, is not my native language


Reply to this email directly or view it on GitHub
#5.

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi,

sorry, usable was wrong statement. For getting a grip of your engine it is important to have working samples, but maybe i can find out how it works.

I try to write a game running on pandora/pyra (successor), an arm mini computer with opengl es 1.1/2.0 support.

Grettings
Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Well, if you want to make games to that platform, as long as FPC supports
it and it works with Open 2.0, its ok.
Unless it is Android based, you will probably need to add support for it in
the engine, since probably it requires custom startup/input/sound code.

Check the Engine\OS folder, you'll just need to add a new folder called
Pandora, with a TERRA_OS.pas and any other custom units you need there.

On Mon, Nov 2, 2015 at 4:33 PM, TSGer2015 [email protected] wrote:

Closed #5 #5.


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Thanks for hint. It is a linux platform (Angstöm) and fpc/lazarus can cross compile to this platform. I have written an opengl es demo for it, a simple labyrinth sample, with milkshape/wavefront/MD3 loader, but with "windows 8.1" the amd "opengl es" emulation is not working any more.

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi,

after some changes, mostly in TERRA_GLES2Renderer.pas, which has old references to "image" or "color", i can cross compile and link sprite_simple.dpr for Pandora. But starting failed, library libGL.so.1 was not found, that's correct, there is no OpenGL library on system, only OpenGL ES.

In unit TERRA_OS work i include only OpenGLESRender, but TERRA_Debug includes direct/indirect TERRA_OpenGL and this unit loads library libGL.so.1.

Is there a way to work around this behavior? Or have i miss understand something?

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Yes, correct, Image-> TERRAImage, Color -> ColorRGBA

TERRA_Debug is not necessary at all, this is mostly for debugging OpenGL
problems in desktop.
What unit is including it in the compilation?

On Tue, Nov 3, 2015 at 4:33 PM, TSGer2015 [email protected] wrote:

Hi,

after some changes, mostly in TERRA_GLES2Renderer.pas, which has old
references to "image" or "color", i can cross compile and link
sprite_simple.dpr for Pandora. But starting failed, library libGL.so.1 was
not found, that correct, there is no OpenGL library on system, only OpenGL
ES.

In unit TERRA_OS work i include only OpenGLESRender, but TERRA_Debug
includes direct/indirect TERRA_OpenGL and this unit loads library
libGL.so.1.

Is there a way to work around this behavior? Or have i miss understand
something?

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Thanks for fast response.

I found it in TERRA_List, i can put

{$IFDEF DEBUG_GL} TERRA_DebugGL{$ELSE}TERRA_GL{$ENDIF};

around it, so TERRA_GL is loaded from OS directory, in my case PANDORA. I copied TERRA_GL from android directory, but this load all function statically, in TERRA_OpenGLES all function are loaded dynamically, depends on DEFINE - setting. In Windows seems to be the same, statically compiled in TERRA_GL, in TERRA_OpenGL loads dynamically. So, there two different unit for same doing. Hopefully i can explain it correkt.

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

OpenGLES can be loaded dynamically or static, because Android requires
dynamic and iOS requires static, if I remember correctly.

If you want, I can add you to the contributors list, so that you send
commits with those changes (and include the Pandora stuff).

On Tue, Nov 3, 2015 at 5:11 PM, TSGer2015 [email protected] wrote:

Thanks for fast response.

I found it in TERRA_List, i can put

{$IFDEF DEBUG_GL} TERRA_DebugGL{$ELSE}TERRA_GL{$ENDIF};

around it, so TERRA_GL is loaded from OS directory, in my case PANDORA. I
copied TERRA_GL from android directory, but this load all function
statically, in TERRA_OpenGLES all function are loaded dynamically, depends
on DEFINE - setting. In Windows seems to be the same, statically compiled
in TERRA_GL, in TERRA_OpenGL loads dynamically. So, there two different
unit for same doing. Hopefully i can explain it correkt.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

If i have some functional samples, i will make a diff of my changes and send it to. if you accept it, i can commit this to the repository. I had done some changes on important units and i don't know if there all correct :)

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Ok, that's fine. If you have more questions just tell me

On Tue, Nov 3, 2015 at 6:02 PM, TSGer2015 [email protected] wrote:

If i have some functional samples, i will make a diff of my changes and
send it to. if you accept it, i can commit this to the repository. I had
done some changes on important units and i don't know if there all correct
:)

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

it is possible to add new defines to "terra.inc"?

I want to add new defines

  • PANDORA the new system
  • HAS_DIRECTX
  • HAS_OPENGL
  • HAS_OPENGLES
  • HAS_NULLRENDER

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Sure, no problem,any improvements to the engine are welcome! :)

On Wed, Nov 4, 2015 at 5:21 PM, TSGer2015 [email protected] wrote:

Hi Relfos,

it is possible to add new defines to "terra.inc"?

I want to add new defines

  • PANDORA the new system
  • HAS_DIRECTX
  • HAS_OPENGL
  • HAS_OPENGLES
  • HAS_NULLRENDER

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

small success. Now compiling without any reference to library "libGL,so" or "opengl32.dll" if the new define HAS_OPENGL not set, TERRA_GL in OS/Windows is not included any more. I can compile with NULL-Render, no opengl stuff is included in this case.

I test some samples, sprite_simple, sprite_benchmark, clothes, picking, bloom, all this works with opengl render. Render TERRA_D3D9Renderer can not compiled, missing some changes to new render system.

Cross compiling to my pandora works, but on startup i got strange message "this binary has no dynamic library compiled in". This comes from unit dynlib, i have check my cross compiler.

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

I was thinking, in fact there should not be any need for those includes,
I'm not understanding why you were getting those units included in the
compilation, maybe you based your TERRA_OS on the Windows/TERRA_OS.pas?

The D3D9 renderer, OpenGL and OpenGL ES renderer should not included in any
'uses' except in TERRA_OS (which should call something like
Renderers.Add(OpenGLRenderer.Create()))
If some other unit did use them, it was a mistake.

Linux/TERRA_OS and OSX/TERRA_OS just include TERRA_GLRenderer
Android/TERRA_OS and iOS/TERRA_OS just include TERRA_GLESRenderer
Windows/TERRA_OS includes TERRA_GLRenderer (and in future will include
TERRA_D3D9Rendere, which is still incomplete)

NullRenderer like you said, is useful to test compiling the code without
any graphical library dependencies.

So, basically you have a different TERRA_OS per platform, and in your case
you just need to add the TERRA_GLESRenderer unit in the uses list of your
Pandora/TERRA_OS.pas file, and then call the function to register the
renderer somewhere in the .InitSettings method of the same file. None of
the other units need to be added because they dont make sense for that
platform.

To explain this better, TERRA_OS should implement the OS specific code, by
implement a Application class that inherits from BaseApplication
(TERRA_Application.pas).
The kind of stuff that neeeds to be implemented there is the following:

  • App/Window creation (including registering all supported Renderers)
  • Events (mouse, keyboard, gamepad, etc)
  • Date/Timing (high resolution timers and date/time)
  • Other platform specific misc functions (like opening the browser,
    enabling/disabling ads, etc)

You should use the Linux/TERRA_OS as base, since it is the most similar.
Especially the timing functions might not need changes.
Also if Pandora uses a Xsystem for graphics/input, then most of the work is
done.

On Wed, Nov 4, 2015 at 6:54 PM, TSGer2015 [email protected] wrote:

Hi Relfos,

small success. Now compiling without any reference to library "libGL,so"
or "opengl32.dll" if the new define HAS_OPENGL not set, TERRA_GL in
OS/Windows is not included any more. I can compile with NULL-Render, no
opengl stuff is included in this case.

I test some samples, sprite_simple, sprite_benchmark, clothes, picking,
bloom, all this works with opengl render. Render TERRA_D3D9Renderer can not
compiled, missing some changes to new render system.

Cross compiling to my pandora works, but on startup i got strange message
"this binary has no dynamic library compiled in". This comes from unit
dynlib, i have check my cross compiler.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

there where some direct / indirect includes of TERRA_OpenGL

  • TERRA_OpenGLCommon, includes from OpenGLES2Render, loads always TERRA_OpenGL if define MOBILE not set (PANDORA is not a mobile device), i change this into HAS_OPENGLES and set this define, if define MOBILE or PANDORA was defined in terra.inc.
  • in TERRA_DebugGL, but not needed in this unit, i remove this inclusion
  • TERRA_LIST includes TERRA_Debug, i remove this inclusion

This are only small changes but at without them, TERRA_OpenGL was compiled into my binary, and this loads library libGL.so, which not exists on pandora linux.

Now i have a PANDORA/TERRA_OS without including unit GLX, this loads opengl from fpc too. I believe this can also removed from OS/Linux and unit Linux/TERRA_GL can be deleted too, but this is to be checked.

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Ok, so you'll have to avoid getting the desktop TERRA_GLRenderer and
TERRA_OpenGL to be added to the compilation.

Also the reason that I have Linux/TERRA_GL, TERRA_Sockets and tons of other
custom made bindings is mostly because I want to keep the engine
compiler-agnostic (support for FPC, Delphi, Oxygene, etc) and also because
some FPC units use conventions that make that very difficult (eg: declaring
parameters as pointers to integers instead of just "Var bla:integer", which
breaks compability with Oxygene and Pascal Smart Studio, who do not support
pointers, or they like to append fp_ to names of functions).

On Wed, Nov 4, 2015 at 8:31 PM, TSGer2015 [email protected] wrote:

Hi Relfos,

there where some direct / indirect includes of TERRA_OpenGL

  • TERRA_OpenGLCommon, includes from OpenGLES2Render, loads always
    TERRA_OpenGL if define MOBILE not set (PANDORA is not a mobile device), i
    change this into HAS_OPENGLES and set this define, if define MOBILE or
    PANDORA was defined in terra.inc.
  • in TERRA_DebugGL, but not needed in this unit, i remove this
    inclusion
  • TERRA_LIST includes TERRA_Debug, i remove this inclusion

This are only small changes but at without them, TERRA_OpenGL was compiled
into my binary, and this loads library libGL.so, which not exists on
pandora linux.

Now i have a PANDORA/TERRA_OS without including unit GLX, this loads
opengl from fpc too. I believe this can also removed from OS/Linux and unit
Linux/TERRA_GL can be deleted too, but this is to be checked.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

Small update. I can compile to arm linux. With my old cross compiler, 2.5.1, i got a x11 transparent windows on Pandora, but no egl context, and after a few seconds application terminating without interaction from me. Is there a DEFINE for debug output to console on lnux?

With my new cross (3.0rc2) it starts but terminates immediately with a segment fault, needs more investigation.

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Welcome to the pain of ARM cross compiling with FPC.

I was unable to get the engine working in a stable way with FPC 3.0. My
game loads fine, displays the main menu, but once I login it crashes with a
floating point exception. First try checking if you are using a compiler
with hard float compiled-in as it might be a similar problem.

Anyway, better to try getting it working first with 2.5 (or 2.7, as its the
latest version I know its stable)

About debugging to console, check TERRA_Log, enable the console debug
switch, I remember I've used it before in Linux, not sure if theres any
difference in this platform.

Also take note that the Linux EGL context initialization code is a bit
order sensitive, and I've heard reports that my game does not boot in a
small percentage of Linux distros, so there might be a small bug somewhere
in that code.

On Sun, Nov 8, 2015 at 1:06 PM, TSGer2015 [email protected] wrote:

Hi Relfos,

Small update. I can compile to arm linux. With my old cross compiler,
2.5.1, i got a x11 transparent windows on Pandora, but no egl context, and
after a few seconds application terminating with out interaction from me.
Is there a DEFINE for debug output to console on lnux?

With my new cross (3.0rc2) it starts but terminates immediately with a
segment fault, needs more investigation.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

I'm using my old cross compiler, the new one crashed in system units of fpc.

Building fragment code for shader on Pandora fails, i got a segment fault later. If have disabled shader support with define DISABLESHADERS, but this seems to be ignored in TERRASprite, the shaders compiler is called.

Thomas

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Sorry, you are creating always a minimal shader, i have to check it.
Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Yes, if the shader compilation fails, a very simple shader that only
outputs magenta color is loaded instead.
Try to see what error says in the shader log.

On Wed, Nov 11, 2015 at 6:45 AM, TSGer2015 [email protected] wrote:

Sorry, you are creating always a minimal shader, i have to check it.
Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

sorry to ask you, but where did you create an opengl es context? In TERRA_GLES2Renderer CreateContext load opengl functions, but there is no context creation, or?

glCreateShader fails on pandora, if no valid context is created before. This raise the segment fault.

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

I checked, what is happening is that in GLES I create the context in Java
(Android) or Objective-C (iOS) before the Pascal code even starts.
So in your case, you should add a IFDEF PANDORA to
OpenGLES2Renderer.CreateContext() and put there any context initialization
code you need.

On Wed, Nov 11, 2015 at 4:15 PM, TSGer2015 [email protected] wrote:

Hi Relfos,

sorry to ask you, but where did you create an opengl es context? In
TERRA_GLES2Renderer CreateContext load opengl functions, but there is no
context creation, or?

glCreateShader fails on pandora, if no valid context is created before.
This raise the segment fault.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Any success with this?

Also can you send a pull request with the changes?
I might be able to take a look this weekend.

On Wed, Nov 11, 2015 at 4:40 PM, Sergio Flores [email protected] wrote:

I checked, what is happening is that in GLES I create the context in Java
(Android) or Objective-C (iOS) before the Pascal code even starts.
So in your case, you should add a IFDEF PANDORA to
OpenGLES2Renderer.CreateContext() and put there any context initialization
code you need.

On Wed, Nov 11, 2015 at 4:15 PM, TSGer2015 [email protected]
wrote:

Hi Relfos,

sorry to ask you, but where did you create an opengl es context? In
TERRA_GLES2Renderer CreateContext load opengl functions, but there is no
context creation, or?

glCreateShader fails on pandora, if no valid context is created before.
This raise the segment fault.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

no really success, i get an opengl es context, but glCreateShader raise always a segmentation fault. I have no idea why, now i write a small test program with my a self written opengl es header.

If have only done small changes, changed some lines from "Log" to "Engine.Log", or "RaiseError" to "Engine.RaiseError" , removed some not needed units from "uses" statement, but nothing really to submit.

Thomas

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

I have a working opengl es sample with my opengl es dynamic function loader and this works on Windows and Linux. Luckily most Names und Types are identical to TERRA_OpenGLES.pas, only removing some "T" on from my type declarations. If i use TERRA_OpenGLES.pas instead of my own unit glCreateShader raise after call an exception. This is the first called function from opengl es. So there must something with dynamic loading of opengl es functions.

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Let me see if I understood, the only thing you changed was replacing the
TERRA_OpenGLES with a another equivalent unity, everything else is the
same, and you got an engine sample running?

I never tested OpenGLES on Windows or Linux, since on those OS you have
acess to normal OpenGL, are you using a GLES emulator or something?

Did you check if glCreateShader() is NIL when using the TERRA_OpenGLES unit?

On Thu, Nov 19, 2015 at 6:16 PM, TSGer2015 [email protected] wrote:

I have a working opengl es sample with my opengl es dynamic function
loader and this works on Windows and Linux. Luckily most Names und Types
are identical to TERRA_OpenGLES.pas, only removing some "T" on from my type
declarations. If i use TERRA_OpenGLES.pas instead of my own unit
glCreateShader raise after call an exception. This is the first called
function from opengl es. So there must something with dynamic loading of
opengl es functions.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Correct, that what i have done, i can switch between your and my dynamic loader with a DEFINE - Statement, but not with an engine sample, i have a self written sample.

I'm using GLES 2.0 emulator from MALI/AMD which works in other projects without problems and only a few functions are not loaded and reported from your loader
GLFunction glBlendFuncSeparate not avaliable.
GLFunction glDiscardFramebuffer not avaliable.
GLFunction glRenderbufferStorageMultisample not avaliable.
GLFunction glResolveMultisampleFramebuffer not avaliable.

All other functions are loaded, glCreateShader is not NIL. Must be something with calling convention, but both using "cdecl;". I have no idea, whats going wrong at moment.

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Well, I'd say, keep using your dynamic loader for now and just advance to
other things.

Later either try to understand the difference yourself, or send me your
loader so I can compare.

On Thu, Nov 19, 2015 at 6:41 PM, TSGer2015 [email protected] wrote:

Correct, that what i have done, i can switch between your and my dynamic
loader with a DEFINE - Statement.

I'm using GLES 2.0 emulator from MALI/AMD which works in other projects
without problems and only a few functions are not loaded and reported from
your loader
GLFunction glBlendFuncSeparate not avaliable.
GLFunction glDiscardFramebuffer not avaliable.
GLFunction glRenderbufferStorageMultisample not avaliable.
GLFunction glResolveMultisampleFramebuffer not avaliable.

All other functions are loaded, glCreateShader is not NIL. Must be
something with calling convention, but both using "cdecl;". I have no idea,
whats going wrong at moment.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

i was very busy, did not come to work on this.

I changed in your TERRA_OpenGLES the calling convention for Windows by replacing all "cdec;" with "{$ifdef WIN32}stdcall;{$else}cdecl;{$endif} ", now both implementations working in my self written sample.

But i got always an error in glCreateShader in your TERRA_OpenGLCommon, seems that something before goes wrong.

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

I see, in Windows openGL always need stdcall indeed, I was thinking you
were compiling directly to Linux/Pandora.

About glCreateShader, it crashes or the function just fails to create a
shader?
If it is the latter, there's code there to get the error from the opengl
driver, what says in the log?

There are some differences between OpenGL and OpenGLES shaders. OpenGLES
shaders need some precision formats for all variable declarations and
OpenGL needs a #version declaration.
There's code in that function that simply removes the things that are not
necessary from the shader source, maybe due to a bad combination of defines
the wrong things are being removed.

On Sun, Dec 6, 2015 at 10:42 AM, TSGer2015 [email protected] wrote:

Hi Relfos,

i was very busy, did not come to work on this.

I changed in your TERRA_OpenGLES the calling convention for Windows by
replacing all "cdec;" with "{$ifdef WIN32}stdcall;{$else}cdecl;{$endif} ",
now both implementations working in my self written sample.

But i got always an error in glCreateShader in your TERRA_OpenGLCommon,
seems that something before goes wrong.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

For testing and better debugging i'm working on windows with Delphi 7 and the Mali OpenGLES Emulator.

It crashes inside glCreateShader with an EAccessViolation exception.I have found that calling any OpenGLES function in OpenGLShader.CompileShader produces the error.

If i call glCreateShader inside Sprite_Simple.MyDemo.OnRender2D at any place, i got a valid shader id, but later, it crashes. I have no idea why.

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Try modifying terra.inc

You need something like

{$IFDEF PANDORA}{$UNDEF PC}[$ENDIF}

The "PC" define is set if the engine is compiled in Windows, OSX or Linux,
for OpenGL desktop. If you undefine it, it should take the OpenGLES path.

On Sun, Dec 6, 2015 at 5:44 PM, TSGer2015 [email protected] wrote:

For testing and better debugging i'm working on windows with Delphi 7 and
the Mali OpenGLES Emulator.

It crashes inside glCreateShader with an EAccessViolation exception.I have
found that calling any OpenGLES function in OpenGLShader.CompileShader
produces the error.

If i call glCreateShader inside Sprite_Simple.MyDemo.OnRender2D at any
place, i got a valid shader id, but later, it crashes. I have no idea why.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

I had already disbaled "PC".

My defines for PANDORA are:
{$IFDEF PANDORA}
{$UNDEF MOBILE}
{$UNDEF PC}
{$UNDEF WINDOWS}
{$UNDEF FRAMEBUFFEROBJECTS}
{$UNDEF POSTPROCESSING}
{$UNDEF SHADOWMAPS}
{$DEFINE DISABLEVR}
{$DEFINE CONSOLEWINDOW}
{$DEFINE DISABLESHADERS}
{$ENDIF}

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

The DISABLESHADERS there.... try removing that. I not sure if that is
something used only in older engine versions or if still has some effects.

On Sun, Dec 6, 2015 at 6:33 PM, TSGer2015 [email protected] wrote:

I had already disbaled "PC".

My defines for PANDORA are:
{$IFDEF PANDORA}
{$UNDEF MOBILE}
{$UNDEF PC}
{$UNDEF WINDOWS}
{$UNDEF FRAMEBUFFEROBJECTS}
{$UNDEF POSTPROCESSING}
{$UNDEF SHADOWMAPS}

{$DEFINE DISABLEVR}
{$DEFINE CONSOLEWINDOW}
{$DEFINE DISABLESHADERS}
{$ENDIF}


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Done and remove a double call of GraphicsRenderer.CreateContext(), in GraphicsRenderer.Reset() by direct calling of CreateContext() and indirect by OpenGLES2Renderer.Initialize().

I add a new "OS\SDL" - Directory, this uses SDL 1.2 for hardware abstraction and i got now a valid gles2 context on windows opengles emulator, a windows with correct background color is shown, but no sprites on it. So, have to check shader compilation, but no crashes any more.

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Thats a nice progress, keep me posted :)

On Mon, Dec 7, 2015 at 5:35 PM, TSGer2015 [email protected] wrote:

Done and remove a double call of GraphicsRenderer.CreateContext(), in
GraphicsRenderer.Reset() by direct calling of CreateContext() and indirect
by OpenGLES2Renderer.Initialize().

I add a new "OS\SDL" - Directory, this uses SDL 1.2 for hardware
abstraction and i got now a valid gles2 context on windows opengles
emulator, a windows with correct background color is shown, but no sprites
on it. So, have to check shader compilation, but no crashes any more.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

no time, no progress. I have attached my changed files,

  • terra.inc - Adding HAS_OPENGLES in MOBIL-Section and SDL/Pandora defines
  • TERRA_GLES2Renderer - replace Image with TERRAImage, Color with ColorRGBA, TERRA_Log.Log with Engine.Log.Write and more
  • TERRA_OpenGLCommon - replaced {$IFDEF MOBILE} with {$IFDEF HAS_OPENGLES}
  • TERRA_OpenGLES - Made it compatible with Windows OpenGLES emulator

Maybe is a good idea adding some defines like HAS_OPENGL, HAS_DIRECTX, HAS_NULLRENDER for easy switching between different renderer.

My SDL implementation is not ready, keyboard, mouse and windows management is working, but using opengl render is alway in full screen and opengles render has strange output, so not useful at moment.

Greetings
Thomas

changes20151220_tse.zip

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Thanks for this, I'll test it and add to the master branch.
And that defines idea is good, I'll adopt it :)

On Sun, Dec 20, 2015 at 12:42 PM, TSGer2015 [email protected]
wrote:

Hi Relfos,

no time, no progress. I have attached my changed files,

  • terra.inc - Adding HAS_OPENGLES in MOBIL-Section and SDL/Pandora
    defines
  • TERRA_GLES2Renderer - replace Image with TERRAImage, Color with
    ColorRGBA, TERRA_Log.Log with Engine.Log.Write and more
  • TERRA_OpenGLCommon - replaced {$IFDEF MOBILE} with {$IFDEF
    HAS_OPENGLES}
  • TERRA_OpenGLES - Made it compatible with Windows OpenGLES emulator

Maybe is a good idea adding some defines like HAS_OPENGL, HAS_DIRECTX,
HAS_NULLRENDER for easy switching between different renderer.

My SDL implementation is not ready, keyboard, mouse and windows management
is working, but using opengl render is alway in full screen and opengles
render has strange output, so not useful at moment.

Greetings
Thomas

changes20151220_tse.zip
https://github.com/Relfos/TERRA-Engine/files/67798/changes20151220_tse.zip


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

All seems ok, I added it to the master branch.

Also if you want, I can add you to the contributors list :)

On Sun, Dec 20, 2015 at 1:04 PM, Sergio Flores [email protected] wrote:

Thanks for this, I'll test it and add to the master branch.
And that defines idea is good, I'll adopt it :)

On Sun, Dec 20, 2015 at 12:42 PM, TSGer2015 [email protected]
wrote:

Hi Relfos,

no time, no progress. I have attached my changed files,

  • terra.inc - Adding HAS_OPENGLES in MOBIL-Section and SDL/Pandora
    defines
  • TERRA_GLES2Renderer - replace Image with TERRAImage, Color with
    ColorRGBA, TERRA_Log.Log with Engine.Log.Write and more
  • TERRA_OpenGLCommon - replaced {$IFDEF MOBILE} with {$IFDEF
    HAS_OPENGLES}
  • TERRA_OpenGLES - Made it compatible with Windows OpenGLES emulator

Maybe is a good idea adding some defines like HAS_OPENGL, HAS_DIRECTX,
HAS_NULLRENDER for easy switching between different renderer.

My SDL implementation is not ready, keyboard, mouse and windows
management is working, but using opengl render is alway in full screen and
opengles render has strange output, so not useful at moment.

Greetings
Thomas

changes20151220_tse.zip
https://github.com/Relfos/TERRA-Engine/files/67798/changes20151220_tse.zip


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

since I have not made any real change, it is your decision. When my
SDL/Pandora is working and uploaded, than you can add me.

Grettings,
Thomas

Am 20.12.2015 um 21:23 schrieb Relfos:

All seems ok, I added it to the master branch.

Also if you want, I can add you to the contributors list :)

On Sun, Dec 20, 2015 at 1:04 PM, Sergio Flores [email protected] wrote:

Thanks for this, I'll test it and add to the master branch.
And that defines idea is good, I'll adopt it :)

On Sun, Dec 20, 2015 at 12:42 PM, TSGer2015 [email protected]
wrote:

Hi Relfos,

no time, no progress. I have attached my changed files,

  • terra.inc - Adding HAS_OPENGLES in MOBIL-Section and SDL/Pandora
    defines
  • TERRA_GLES2Renderer - replace Image with TERRAImage, Color with
    ColorRGBA, TERRA_Log.Log with Engine.Log.Write and more
  • TERRA_OpenGLCommon - replaced {$IFDEF MOBILE} with {$IFDEF
    HAS_OPENGLES}
  • TERRA_OpenGLES - Made it compatible with Windows OpenGLES emulator

Maybe is a good idea adding some defines like HAS_OPENGL, HAS_DIRECTX,
HAS_NULLRENDER for easy switching between different renderer.

My SDL implementation is not ready, keyboard, mouse and windows
management is working, but using opengl render is alway in full
screen and
opengles render has strange output, so not useful at moment.

Greetings
Thomas

changes20151220_tse.zip

https://github.com/Relfos/TERRA-Engine/files/67798/changes20151220_tse.zip


Reply to this email directly or view it on GitHub

#5 (comment).


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

SDL and OpenGL now rendering works (samples sprite_simple, mix_test, music_player), strange effect, i got double framerate with OS/SDL/OpenGL than with OS/Windows/OpenGL :)

But with OpenGLES i see nothing. No crash, but only a empty output on Windows and Pandora. The creation of gles context is ok, shaders are compiling and linking fine and i see that method SetMat4Uniform for project and model matrix is called in every frame.

No idea, whats going wrong.

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

That's good progress!

I have a similar problem with the iOS current port, it worked before but
after Apple released iOS 7 it started showing only a black screen.
It is probably a bug related to OpenGL FBO, everything might be working but
the final result is not being copied correctly to the window.

On Wed, Dec 23, 2015 at 12:48 PM, TSGer2015 [email protected]
wrote:

Hi Relfos,

SDL and OpenGL now rendering works (samples sprite_simple, mix_test,
music_player), strange effect, i got double framerate with OS/SDL/OpenGL
than with OS/Windows/OpenGL :)

But with OpenGLES i see nothing. No crash, but only a empty output on
Windows and Pandora. The creation of gles context is ok, shaders are
compiling and linking fine and i see that method SetMat4Uniform for project
and model matrix is called in every frame.

No idea, whats going wrong.

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

i want to rename your OpenGLRender to CustomOpenGLRender, extract
plattform code in OpenGLRender to OS/Windows, OS/Linux, OS/OSX and a
Unit TERRA_GLRender.pas in each OS folder.

Following methods will be changed and move to each OS folder.

  • CreateContext : Boolean;
  • DestroyContext();
  • EndFrame();

New Units are:
Engine\Graphics\Renderer\CustomGLRender.pas
Engine\OS\Windows\TERRA_OpenGLRender.pas
Engine\OS\Linux\TERRA_OpenGLRender.pas
Engine\OS\OSX\TERRA_OpenGLRender.pas

What do you think about it?

Thomas

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Sure, that's ok :)

On Thu, Dec 24, 2015 at 8:29 AM, TSGer2015 [email protected] wrote:

Hi Relfos,

i want to rename your OpenGLRender to CustomOpenGLRender, extract
plattform code in OpenGLRender to OS/Windows, OS/Linux, OS/OSX and a
Unit TERRA_GLRender.pas in each OS folder.

Following methods will be changed and move to each OS folder.

  • CreateContext : Boolean;
  • DestroyContext();
  • EndFrame();

New Units are:
Engine\Graphics\Renderer\CustomGLRender.pas
Engine\OS\Windows\TERRA_OpenGLRender.pas
Engine\OS\Linux\TERRA_OpenGLRender.pas
Engine\OS\OSX\TERRA_OpenGLRender.pas

What do you think about it?

Thomas


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Hi Relfos,

i have attached my changes. Nothing special, for better integration of an SDL based setup, i moved TERRA_GLRender.pas into OS folders and add a new unit TERRA_GLCustomRenderer.pas.

For Linux and Windows i checked it, but i have no OSX to test it.

Thomas

Changes20151229.zip

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Thanks, the SDL option is a really nice addition :)

However I just tried it, I get a white blank screen when running the Sprite
demo using SDL target for Windows (in OpenGL mode, not GLES).
It might be simple to fix, I'll give it a look next weekend.

I've commited the GLCustomRenderer changes to the master branch, the SDL
issues I'll wait until the problem is found/fixed.

On Tue, Dec 29, 2015 at 8:53 AM, TSGer2015 [email protected] wrote:

Hi Relfos,

i have attached my changes. Nothing special, for better integration of an
SDL based setup, i moved TERRA_GLRender.pas into OS folders and add a new
unit TERRA_GLCustomRenderer.pas.

For Linux and Windows i checked it, but i have no OSX to test it.

Thomas

Changes20151229.zip
https://github.com/Relfos/TERRA-Engine/files/73791/Changes20151229.zip


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

Ups, sorry, the SDL submitting is an error by me, i have forget to
delete it. It's not complete at moment.

But, it is working on my system, i see all sprites and got around 1200
FPS on my system, nearly the same with your windows implementation.

Thomas

from terra-engine.

TSGer2015 avatar TSGer2015 commented on August 28, 2024

You have to remove TERRA_GLRenderer.pas from Graphics/Renderer, now you have two TERRA_GLRenderer.pas in unit search path.

from terra-engine.

Relfos avatar Relfos commented on August 28, 2024

Yes, that fixes it, I am now able to run the demo using SDL :)

On Tue, Dec 29, 2015 at 3:51 PM, TSGer2015 [email protected] wrote:

You have to remove TERRA_GLRenderer.pas from Graphics/Renderer, now you
have two TERRA_GLRenderer.pas in unit search path.


Reply to this email directly or view it on GitHub
#5 (comment).

from terra-engine.

Related Issues (13)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.