I'm attempting to build Irrlicht on a Vero4K (Amlogic S905x SOC)running OSMC. This is a Debian based distro running in framebuffer - no X environment.
I have SDL2 compiled with FB-dev support which I thought would make this easy but after a few failed attempts I've realised Irrlicht does not yet support SDL2 (unless anyone has an up-to-date patch?). SO I'm building for Linux and a FB Device
Where I am so far:
git cloned the ogl-es branch from https://github.com/zaki/irrlicht.git
Added the following to IrrCompileConfig.h
Code: Select all
// platforms
#define _IRR_LINUX_PLATFORM_
#define NO_IRR_WINDOWS_
// devices
#define _IRR_COMPILE_WITH_FB_DEVICE_
#define NO_IRR_COMPILE_WITH_X11_DEVICE_
#define NO_IRR_COMPILE_WITH_WINDOWS_DEVICE_
#define NO_IRR_COMPILE_WITH_SDL_DEVICE_
#define NO_IRR_COMPILE_WITH_CONSOLE_DEVICE_
#define NO_IRR_COMPILE_WITH_SOFTWARE_
#define NO_IRR_COMPILE_WITH_BURNINGSVIDEO_
// API options
#define _IRR_COMPILE_WITH_OGLES1_
#define _IRR_COMPILE_WITH_OGLES2_
#define _IRR_COMPILE_WITH_WEBGL1_
#define NO_IRR_COMPILE_WITH_EGL_MANAGER_
#define NO_IRR_COMPILE_WITH_OPENGL_
// miscellaneous
#define _IRR_COMPILE_WITH_XML_
#define _IRR_COMPILE_WITH_GUI_
#define NO_IRR_COMPILE_WITH_LEAK_HUNTER_
#define NO_IRR_COMPILE_WITH_JOYSTICK_EVENTS_
#define NO_IRR_COMPILE_WITH_PROFILING_
#define NO_IRR_COMPILE_WITH_DIRECT3D_9_
#define NO_IRR_LINUX_X11_VIDMODE_
#define NO_IRR_LINUX_X11_RANDR_
#define NO_IRR_COMPILE_WITH_X11_
#define NO_IRR_LINUX_XCURSOR_
#define NO_IRR_WCHAR_FILESYSTEM
#define NO_IRR_D3D_NO_SHADER_DEBUGGING
Code: Select all
make sharedlib
So I changed from absolute path in MakefileIn file included from COGLESExtensionHandler.h:17:0,
from COGLESExtensionHandler.cpp:7:
COGLESCommon.h:20:21: fatal error: GLES/gl.h: No such file or directory
#include <GLES/gl.h>
^
compilation terminated.
In file included from COGLESExtensionHandler.h:17:0,
from COGLESDriver.h:18,
from COGLESDriver.cpp:5:
COGLESCommon.h:20:21: fatal error: GLES/gl.h: No such file or directory
#include <GLES/gl.h>
^
compilation terminated.
g++ -Wall -pipe -fno-exceptions -fno-rtti -fstrict-aliasing -g -D_DEBUG -fPIC -I../../include -Izlib -Ijpeglib -Ilibpng -DIRRLICHT_EXPORTS=1 -c -o COGLES2Driver.o COGLES2Driver.cpp
<builtin>: recipe for target 'COGLESExtensionHandler.o' failed
make: *** [COGLESExtensionHandler.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from COGLES2ExtensionHandler.h:17:0,
from COGLES2Driver.h:19,
from COGLES2Driver.cpp:6:
COGLES2Common.h:28:23: fatal error: GLES2/gl2.h: No such file or directory
#include <GLES2/gl2.h>
^
compilation terminated.
<builtin>: recipe for target 'COGLESDriver.o' failed
make: *** [COGLESDriver.o] Error 1
<builtin>: recipe for target 'COGLES2Driver.o' failed
make: *** [COGLES2Driver.o] Error 1
Code: Select all
CXXINCS += -I/opt/vero3/include
Code: Select all
CXXINCS += -I../../../../../opt/vero3/include
I substitued the Irrlicht supplied gles2-ext.h for the one supplied in my system's GLES2 includes.gles2-ext.h50: error: variable or field ‘glWaitVkSemaphoreNV’ declared void
GL_APICALL void GL_APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore);
^
gles2-ext.h50: error: ‘GLuint64’ was not declared in this scope
gles2-ext.h52: error: variable or field ‘glSignalVkSemaphoreNV’ declared void
GL_APICALL void GL_APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore);
^
gles2-ext.h52: error: ‘GLuint64’ was not declared in this scope
gles2-ext.h48: error: variable or field ‘glSignalVkFenceNV’ declared void
GL_APICALL void GL_APIENTRY glSignalVkFenceNV (GLuint64 vkFence);
^
gles2-ext.h48: error: ‘GLuint64’ was not declared in this scope
<builtin>: recipe for target 'COGLES2NormalMapRenderer.o' failed
make: *** [COGLES2NormalMapRenderer.o] Error 1
<builtin>: recipe for target 'COGLES2ParallaxMapRenderer.o' failed
make: *** [COGLES2ParallaxMapRenderer.o] Error 1
<builtin>: recipe for target 'COGLES2MaterialRenderer.o' failed
make: *** [COGLES2MaterialRenderer.o] Error 1
<builtin>: recipe for target 'COGLES2Driver.o' failed
make: *** [COGLES2Driver.o] Error 1
Code: Select all
/opt/vero3/GLES2/glext.h
Code: Select all
#define __gl2ext_h_ 1
The next build gets me:
I can't find references to any of these methods in the Irrlicht source or in my supplied headers, so this is where I'm stuck.g++ -Wall -pipe -fno-exceptions -fno-rtti -fstrict-aliasing -g -D_DEBUG -fPIC -I../../../../../opt/vero3/include -I../../include -Izlib -Ijpeglib -Ilibpng -DIRRLICHT_EXPORTS=1 -c -o Irrlicht.o Irrlicht.cpp
CIrrDeviceFB.cpp: In member function ‘void irr::CIrrDeviceFB::createDriver()’:
CIrrDeviceFB.cpp:232:46: error: ‘fbGetDisplay’ was not declared in this scope
NativeDisplayType display = fbGetDisplay(0);
^
CIrrDeviceFB.cpp:233:49: error: ‘fbGetDisplayGeometry’ was not declared in this scope
fbGetDisplayGeometry(display, &width, &height);
^
CIrrDeviceFB.cpp:234:77: error: ‘fbCreateWindow’ was not declared in this scope
data.OpenGLFB.Window = (void*)fbCreateWindow(display, 0, 0, width, height);
^
CIrrDeviceFB.cpp:250:46: error: ‘fbGetDisplay’ was not declared in this scope
NativeDisplayType display = fbGetDisplay(0);
^
CIrrDeviceFB.cpp:251:49: error: ‘fbGetDisplayGeometry’ was not declared in this scope
fbGetDisplayGeometry(display, &width, &height);
^
CIrrDeviceFB.cpp:252:77: error: ‘fbCreateWindow’ was not declared in this scope
data.OpenGLFB.Window = (void*)fbCreateWindow(display, 0, 0, width, height);
^
CIrrDeviceFB.cpp:262:7: error: ‘DEPRECATED_EDT_DIRECT3D8_NO_LONGER_EXISTS’ was not declared in this scope
case DEPRECATED_EDT_DIRECT3D8_NO_LONGER_EXISTS:
^
CIrrDeviceFB.cpp:262:7: note: suggested alternative:
In file included from ../../include/ITexture.h:11:0,
from ../../include/IVideoDriver.h:10,
from ../../include/IrrlichtDevice.h:10,
from CIrrDeviceStub.h:8,
from CIrrDeviceFB.h:13,
from CIrrDeviceFB.cpp:6:
../../include/EDriverTypes.h:43:3: note: ‘DEPRECATED_EDT_DIRECT3D8_NO_LONGER_EXISTS’
DEPRECATED_EDT_DIRECT3D8_NO_LONGER_EXISTS, // keep enum to avoid breaking enumeration order (might be used in ini-files, serialization, etc)
^
CIrrDeviceFB.cpp: In member function ‘virtual bool irr::CIrrDeviceFB::present(irr::video::IImage*, void*, irr::core::rect<int>*)’:
CIrrDeviceFB.cpp:455:33: warning: ‘void* irr::video::IImage::lock()’ is deprecated (declared at ../../include/IImage.h:187) [-Wdeprecated-declarations]
u8* srcdata = (u8*)image->lock();
^
CIrrDeviceFB.cpp:462:16: warning: ‘void irr::video::IImage::unlock()’ is deprecated (declared at ../../include/IImage.h:195) [-Wdeprecated-declarations]
image->unlock();
^
<builtin>: recipe for target 'CIrrDeviceFB.o' failed
make: *** [CIrrDeviceFB.o] Error 1
make: *** Waiting for unfinished jobs....
Any advice please?