Hola erkos,
No, es el paquete es unico y las DLLs de Legacy y Modern estan en la misma carpeta, solo hay que comentar/descomentar la opcion de compilacion y cambiar el MODE_SET como indique para pasar de Legacy a Modern y viceversa.
Test de mi gameEngine en C++
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: Test de mi gameEngine en C++
Pues efectivamente..
Gemix modern : 22500 procesos aprox..
gameLibZero: 17800 procesos aprox..
Gemix en render puro pega fuerte en windows si..
Voy a probar mas test para comparar bien, pero en renderizado gemix esta bastante agil la verdad..
Gemix modern : 22500 procesos aprox..
gameLibZero: 17800 procesos aprox..
Gemix en render puro pega fuerte en windows si..
Voy a probar mas test para comparar bien, pero en renderizado gemix esta bastante agil la verdad..
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: Test de mi gameEngine en C++
Vale, recordaba que gemix tiene un gran cuello de botella.. y no recordaba bien cual es, se trata del procesamiento.. se muere literalmente cuando tiene muchas operaciones matematicas seguidas..
Ahora CicTec mira este test.. y compara los resultados:
[Codebox=gemix file=Untitled.gemix]compiler_options _gmxsystem_graphics = gmxgraphics_modern;
program test_01;
Global
int img;
int i = 0;
begin
mode_set(640, 400);
set_fps(60, 0);
img = image_load("data/images/00.png");
write(0, 10, 10, 3, &fps);
write(0, 200, 10, 3, &i);
loop
if(fps > 58)
proc();
i++;
end
frame;
end
end
process proc()
private
int k = 0;
begin
graph = img;
x = 320;
y = 200;
scale.x = 50;
scale.y = 50;
loop
rotation.z += 1000;
for(k=0; k<100000; k++)
end
frame;
end
end
[/Codebox]
[Codebox=cpp file=Untitled.cpp]/* gameLibZero game.cpp template */
#include "gameLibZero.cpp"
// Global var block..
Texture2D img;
int st = 0;
//--------------------------------------------------------------------------------------
void setup(){
setMode(640, 400);
//ToggleFullscreen();
setTitle("gameLibZero C++ port render test with openGL 3.x");
setFps(60);
img = loadImage("data/images/00.png");
}
//--------------------------------------------------------------------------------------
class cosa : public sprite{
public:
int k = 0;
void frame(){
angle ++;
for(k=0; k<100000; k++){
}
}
};
//--------------------------------------------------------------------------------------
class textosArriba : public sprite{
public:
int i = 0;
void frame(){
z = -10;
DrawFPS(10, 10);
i = sprites.size();
screenDrawText(GetFontDefault(), 22, i, RIGHT, 120, 10, BLACK, 255);
}
};
//--------------------------------------------------------------------------------------
void draw(){
switch(st){
case 0:
new textosArriba();
st = 10;
break;
case 10:
if(GetFPS() > 58){
for(int i=0; i<10; i++){
cosa* a = new cosa();
a->x = 320;
a->y = 200;
a->size = 50;
a->graph = img;
a->visible = true;
}
}
break;
}
}
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------
[/Codebox]
Ahora CicTec mira este test.. y compara los resultados:
[Codebox=gemix file=Untitled.gemix]compiler_options _gmxsystem_graphics = gmxgraphics_modern;
program test_01;
Global
int img;
int i = 0;
begin
mode_set(640, 400);
set_fps(60, 0);
img = image_load("data/images/00.png");
write(0, 10, 10, 3, &fps);
write(0, 200, 10, 3, &i);
loop
if(fps > 58)
proc();
i++;
end
frame;
end
end
process proc()
private
int k = 0;
begin
graph = img;
x = 320;
y = 200;
scale.x = 50;
scale.y = 50;
loop
rotation.z += 1000;
for(k=0; k<100000; k++)
end
frame;
end
end
[/Codebox]
[Codebox=cpp file=Untitled.cpp]/* gameLibZero game.cpp template */
#include "gameLibZero.cpp"
// Global var block..
Texture2D img;
int st = 0;
//--------------------------------------------------------------------------------------
void setup(){
setMode(640, 400);
//ToggleFullscreen();
setTitle("gameLibZero C++ port render test with openGL 3.x");
setFps(60);
img = loadImage("data/images/00.png");
}
//--------------------------------------------------------------------------------------
class cosa : public sprite{
public:
int k = 0;
void frame(){
angle ++;
for(k=0; k<100000; k++){
}
}
};
//--------------------------------------------------------------------------------------
class textosArriba : public sprite{
public:
int i = 0;
void frame(){
z = -10;
DrawFPS(10, 10);
i = sprites.size();
screenDrawText(GetFontDefault(), 22, i, RIGHT, 120, 10, BLACK, 255);
}
};
//--------------------------------------------------------------------------------------
void draw(){
switch(st){
case 0:
new textosArriba();
st = 10;
break;
case 10:
if(GetFPS() > 58){
for(int i=0; i<10; i++){
cosa* a = new cosa();
a->x = 320;
a->y = 200;
a->size = 50;
a->graph = img;
a->visible = true;
}
}
break;
}
}
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------
[/Codebox]
You do not have the required permissions to view the files attached to this post.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- CicTec
- Posts: 16590
- Joined: Thu Jul 31, 2008 10:18 pm
Re: Test de mi gameEngine en C++
Pues bastante mas que raylib veo y considera que Gemix tiene ejecucion de procesos separados respecto a tu libreria y estan interpretados no nativos, lo que afecta aun mas en rendimiento.erkosone wrote:Pues efectivamente..
Gemix modern : 22500 procesos aprox..
gameLibZero: 17800 procesos aprox..
Gemix en render puro pega fuerte en windows si..
Voy a probar mas test para comparar bien, pero en renderizado gemix esta bastante agil la verdad..
- CicTec
- Posts: 16590
- Joined: Thu Jul 31, 2008 10:18 pm
Re: Test de mi gameEngine en C++
Es por el tema de la interpretacion que te dije anteriormente, aunque tu ejemplo no es comparativo, hacer un bucle de 100000 iteraciones para nada no es que sea usado en un juego realmente.erkosone wrote:Vale, recordaba que gemix tiene un gran cuello de botella.. y no recordaba bien cual es, se trata del procesamiento.. se muere literalmente cuando tiene muchas operaciones matematicas seguidas..
Ahora CicTec mira este test.. y compara los resultados:
[Codebox=gemix file=Untitled.gemix]compiler_options _gmxsystem_graphics = gmxgraphics_modern;
program test_01;
Global
int img;
int i = 0;
begin
mode_set(640, 400);
set_fps(60, 0);
img = image_load("data/images/00.png");
write(0, 10, 10, 3, &fps);
write(0, 200, 10, 3, &i);
loop
if(fps > 58)
proc();
i++;
end
frame;
end
end
process proc()
private
int k = 0;
begin
graph = img;
x = 320;
y = 200;
scale.x = 50;
scale.y = 50;
loop
rotation.z += 1000;
for(k=0; k<100000; k++)
end
frame;
end
end
[/Codebox]
[Codebox=cpp file=Untitled.cpp]/* gameLibZero game.cpp template */
#include "gameLibZero.cpp"
// Global var block..
Texture2D img;
int st = 0;
//--------------------------------------------------------------------------------------
void setup(){
setMode(640, 400);
//ToggleFullscreen();
setTitle("gameLibZero C++ port render test with openGL 3.x");
setFps(60);
img = loadImage("data/images/00.png");
}
//--------------------------------------------------------------------------------------
class cosa : public sprite{
public:
int k = 0;
void frame(){
angle ++;
for(k=0; k<100000; k++){
}
}
};
//--------------------------------------------------------------------------------------
class textosArriba : public sprite{
public:
int i = 0;
void frame(){
z = -10;
DrawFPS(10, 10);
i = sprites.size();
screenDrawText(GetFontDefault(), 22, i, RIGHT, 120, 10, BLACK, 255);
}
};
//--------------------------------------------------------------------------------------
void draw(){
switch(st){
case 0:
new textosArriba();
st = 10;
break;
case 10:
if(GetFPS() > 58){
for(int i=0; i<10; i++){
cosa* a = new cosa();
a->x = 320;
a->y = 200;
a->size = 50;
a->graph = img;
a->visible = true;
}
}
break;
}
}
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------
[/Codebox]
En todo caso en cuanto a renderer ya su nivel esta bastante optimizado.
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: Test de mi gameEngine en C++
ya CicTec, intenta hacer un emisor de particulas en gemix, no se puede por esto mismo, o intenta escanear pixel a pixel una imagen y sacar los R G B A de cada pixel y hacer efectos en real time.. tampoco se puede, y así con todos los trabajos repetitivos que requieren grandes cantidades de procesamiento, pero si, en cuanto al render esta muy bien la verdad.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- CicTec
- Posts: 16590
- Joined: Thu Jul 31, 2008 10:18 pm
Re: Test de mi gameEngine en C++
Se pueden hacer, otra cosa es que no puedes hacerlo en forma "clasica", sino con algunos trucos usables con la particular programacion DIV y el resultado sera lo mismo en rendimiento de tu primero ejemplo, aunque claro eso no quita que la interpretacion ahora mismo en algunas cosas clasicas puede causar problemas, pero ya estuve haciendo hace tiempo pruebas y con algunos tests que hice consegui reducirlo sensiblemente y con mas trabajo podria eliminarlo totalmente, pero requiere bastante tiempo que ahora mismo me falta...erkosone wrote:ya CicTec, intenta hacer un emisor de particulas en gemix, no se puede por esto mismo, o intenta escanear pixel a pixel una imagen y sacar los R G B A de cada pixel y hacer efectos en real time.. tampoco se puede, y así con todos los trabajos repetitivos que requieren grandes cantidades de procesamiento, pero si, en cuanto al render esta muy bien la verdad.
- Hokuto7
- Posts: 1408
- Joined: Mon Aug 28, 2017 10:14 am
Re: Test de mi gameEngine en C++
Como he conseguido hacer funcionar la version modern de gemix,he modificado el test de gemix de erkozone para que funcione en modern y este es el resultado.
Parece que raylib funciona mas rapido que gemix en modo hardware,habria que ver como funciona raylib por software.
Parece que raylib funciona mas rapido que gemix en modo hardware,habria que ver como funciona raylib por software.
You do not have the required permissions to view the files attached to this post.
- CicTec
- Posts: 16590
- Joined: Thu Jul 31, 2008 10:18 pm
Re: Test de mi gameEngine en C++
El ultimo test de erkosone no es comparativo, no tiene utilidad en el mismo la ejecucion del bucle vacio, es el primer test que demuestra que el engine de Gemix es mas rapido de raylib (almenos en las maquinas testadas), pero bueno...Hokuto7 wrote:Como he conseguido hacer funcionar la version modern de gemix,he modificado el test de gemix de erkozone para que funcione en modern y este es el resultado.
Parece que raylib funciona mas rapido que gemix en modo hardware,habria que ver como funciona raylib por software.
raylib no funciona por software, es solo por GPU.
- Hokuto7
- Posts: 1408
- Joined: Mon Aug 28, 2017 10:14 am
Re: Test de mi gameEngine en C++
Muestro los resultados de los ultimos test pero no seria mejor que hagais un test en condiciones,porque aburre un poco estar haciendo tantas pruebas que lo luego uno dice que no funciona el otro dice que si,oye que lio macho 
You do not have the required permissions to view the files attached to this post.