@@ -6,6 +6,7 @@ | |||
*.exe | |||
*.elf | |||
*.self | |||
*.nexe | |||
*.userprefs | |||
*.usertasks | |||
*.pidb | |||
@@ -0,0 +1,10 @@ | |||
#!/bin/sh | |||
# This can't hurt | |||
make distclean | |||
set -e | |||
./build/lol-build bootstrap nacl-amd64 | |||
./build/lol-build configure nacl-amd64 | |||
./build/lol-build build nacl-amd64 | |||
@@ -15,6 +15,7 @@ | |||
# And <platform> is one of: | |||
# - linux-i386 | |||
# - linux-amd64 | |||
# - nacl-amd64 | |||
# - ios-arm | |||
# - osx-amd64 | |||
# - android-arm | |||
@@ -118,6 +119,10 @@ configure() | |||
cd monsterz/android | |||
android update project --path . | |||
;; | |||
nacl-amd64) | |||
# no need for "-u _ZN2pp12CreateModuleEv" but it could be helpful | |||
./configure CXX=x86_64-nacl-g++ CC=x86_64-nacl-gcc ac_cv_exeext=.nexe --host=none LOL_LIBS="-lppapi -lppapi_gles2 -lppapi_cpp" | |||
;; | |||
ps3-ppu) | |||
PATH="$PATH" ./configure CXX=ppu-lv2-g++ CC=ppu-lv2-gcc ac_cv_exeext=.elf --host=none | |||
;; | |||
@@ -178,6 +183,8 @@ check() | |||
;; | |||
ps3-ppu) | |||
;; | |||
nacl-*) | |||
;; | |||
windows-i386) | |||
# If neither $MSYSTEM or $DISPLAY are set, and xvfb-run | |||
# exists, use it to run the test suite. | |||
@@ -128,6 +128,9 @@ PKG_CHECK_MODULES(GLES2, glesv2, | |||
GL_CFLAGS="${GL_CFLAGS} ${GLES2_CFLAGS}" | |||
GL_LIBS="${GL_LIBS} ${GLES2_LIBS}"], | |||
[:]) | |||
AC_CHECK_HEADER(GLES2/gl2.h, | |||
[AC_DEFINE(HAVE_GLES_2X, 1, Define to 1 if GLES 2.x is available) | |||
ac_cv_my_have_gl="yes"]) | |||
PKG_CHECK_MODULES(GL, gl, | |||
[ac_cv_my_have_gl="yes" | |||
@@ -152,6 +155,7 @@ AC_CHECK_HEADER(GL/gl.h, | |||
LIBS="$LIBS_save"]) | |||
AC_CHECK_HEADER(PSGL/psgl.h, | |||
[ac_cv_my_have_gl="yes"]) | |||
if test "${ac_cv_my_have_gl}" = "no"; then | |||
AC_MSG_ERROR([[No OpenGL or OpenGL ES implementation found]]) | |||
fi | |||
@@ -19,6 +19,7 @@ liblol_a_SOURCES = \ | |||
eglapp.cpp eglapp.h \ | |||
\ | |||
$(ps3_sources) \ | |||
$(nacl_sources) \ | |||
$(sdl_sources) \ | |||
\ | |||
shader/shader.cpp shader/shader.h \ | |||
@@ -38,10 +39,13 @@ liblol_a_SOURCES = \ | |||
debug/quad.cpp debug/quad.h | |||
liblol_a_CPPFLAGS = @LOL_CFLAGS@ | |||
sdl_sources = \ | |||
sdl_sources = \ | |||
platform/sdl/sdlapp.cpp platform/sdl/sdlapp.h \ | |||
platform/sdl/sdlinput.cpp platform/sdl/sdlinput.h | |||
nacl_sources = \ | |||
platform/nacl/naclapp.cpp platform/nacl/naclapp.h | |||
if HAVE_PS3 | |||
ps3_sources = \ | |||
platform/ps3/ps3app.cpp platform/ps3/ps3app.h \ | |||
@@ -17,6 +17,8 @@ | |||
#if defined __CELLOS_LV2__ | |||
# include "platform/ps3/ps3app.h" | |||
#elif defined __native_client__ | |||
# include "platform/nacl/naclapp.h" | |||
#elif defined HAVE_GLES_2X | |||
# include "eglapp.h" | |||
#else | |||
@@ -39,6 +41,8 @@ class ApplicationData | |||
#if defined __CELLOS_LV2__ | |||
Ps3App app; | |||
#elif defined __native_client__ | |||
NaClApp app; | |||
#elif defined HAVE_GLES_2X | |||
/* FIXME: this macro is only deactivated if we include "lolgl.h" */ | |||
EglApp app; | |||
@@ -153,7 +153,7 @@ void DebugQuad::TickDraw(float deltams) | |||
if (!data->initialised && !IsDestroying()) | |||
{ | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
glGenVertexArrays(NUM_ARRAYS, data->array); | |||
#endif | |||
glGenBuffers(NUM_BUFFERS, data->buffer); | |||
@@ -183,7 +183,7 @@ void DebugQuad::TickDraw(float deltams) | |||
} | |||
else if (data->initialised && IsDestroying()) | |||
{ | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
glDeleteVertexArrays(NUM_ARRAYS, data->array); | |||
#endif | |||
glDeleteBuffers(NUM_BUFFERS, data->buffer); | |||
@@ -494,7 +494,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* | |||
* Renders an orange square. | |||
*/ | |||
#if !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
glColor4f(orange.x, orange.y, orange.z, orange.w); | |||
glEnableClientState(GL_VERTEX_ARRAY); | |||
@@ -512,7 +512,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* | |||
* Renders a green sine wave made of 1-pixel points. | |||
*/ | |||
#if !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
glColor4f(0.0f, 1.0f, 0.0f, 1.0f); | |||
glPointSize(1.0f); | |||
glEnableClientState(GL_VERTEX_ARRAY); | |||
@@ -531,7 +531,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* | |||
* Renders a multicoloured square with varying colors. | |||
*/ | |||
#if !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
glEnableClientState(GL_VERTEX_ARRAY); | |||
glEnableClientState(GL_COLOR_ARRAY); | |||
@@ -552,7 +552,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* Renders a multicoloured square with varying colors multiplied with an | |||
* animated distorted checkerboard. | |||
*/ | |||
#if !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
glEnable(GL_TEXTURE_2D); | |||
glBindTexture(GL_TEXTURE_2D, data->texture[0]); | |||
glEnableClientState(GL_VERTEX_ARRAY); | |||
@@ -580,7 +580,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* | |||
* Renders an orange square. | |||
*/ | |||
#if !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
if (!shader[0]) | |||
#if !defined __CELLOS_LV2__ | |||
shader[0] = Shader::Create( | |||
@@ -626,7 +626,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* | |||
* Renders an orange square. | |||
*/ | |||
#if !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
if (!shader[0]) | |||
{ | |||
#if !defined __CELLOS_LV2__ | |||
@@ -679,7 +679,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* | |||
* Renders a static, coloured and tiled pattern. | |||
*/ | |||
#if !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
if (!shader[0]) | |||
#if !defined __CELLOS_LV2__ | |||
shader[0] = Shader::Create( | |||
@@ -732,7 +732,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* | |||
* Renders a multicoloured square with varying colors. | |||
*/ | |||
#if !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
if (!shader[0]) | |||
{ | |||
#if !defined __CELLOS_LV2__ | |||
@@ -796,7 +796,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* | |||
* Renders an antialiased green sine wave made of 1-pixel points. | |||
*/ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __CELLOS_LV2__ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __CELLOS_LV2__ && !defined __native_client__ | |||
if (!shader[0]) | |||
shader[0] = Shader::Create( | |||
"#version 120\n" | |||
@@ -842,7 +842,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* Renders a multicoloured square with varying colors xored with an | |||
* animated distorted checkerboard. | |||
*/ | |||
#if !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
if (!shader[0]) | |||
#if !defined __CELLOS_LV2__ | |||
shader[0] = Shader::Create( | |||
@@ -915,7 +915,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* Renders a multicoloured square with varying colors xored with an | |||
* animated distorted checkerboard. | |||
*/ | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
if (!shader[0]) | |||
{ | |||
shader[0] = Shader::Create( | |||
@@ -985,7 +985,7 @@ void DebugQuad::TickDraw(float deltams) | |||
* Renders a multicoloured square with varying colors xored with an | |||
* animated distorted checkerboard. | |||
*/ | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
if (!shader[0]) | |||
{ | |||
shader[0] = Shader::Create( | |||
@@ -1073,7 +1073,7 @@ void DebugQuad::ResetState() | |||
glLoadIdentity(); | |||
#endif | |||
#if !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
glColor4f(1.0f, 1.0f, 1.0f, 1.0f); | |||
#endif | |||
@@ -1082,13 +1082,13 @@ void DebugQuad::ResetState() | |||
#if defined HAVE_GLBEGIN || defined USE_GLEW || defined __CELLOS_LV2__ | |||
glClientActiveTexture(GL_TEXTURE0); | |||
#endif | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_FALSE); | |||
#endif | |||
glDisable(GL_TEXTURE_2D); | |||
glDisable(GL_BLEND); | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
glDisable(GL_POINT_SPRITE); | |||
#endif | |||
@@ -1100,7 +1100,7 @@ void DebugQuad::ResetState() | |||
cgGLDisableProfile(cgGLGetLatestProfile(CG_GL_FRAGMENT)); | |||
#endif | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ | |||
#if !defined __CELLOS_LV2__ && !defined __ANDROID__ && !defined __APPLE__ && !defined __native_client__ | |||
glDisable(GL_VERTEX_PROGRAM_POINT_SIZE); | |||
#endif | |||
} | |||
@@ -0,0 +1,82 @@ | |||
// | |||
// Lol Engine | |||
// | |||
// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net> | |||
// This program is free software; you can redistribute it and/or | |||
// modify it under the terms of the Do What The Fuck You Want To | |||
// Public License, Version 2, as published by Sam Hocevar. See | |||
// http://sam.zoy.org/projects/COPYING.WTFPL for more details. | |||
// | |||
#if defined HAVE_CONFIG_H | |||
# include "config.h" | |||
#endif | |||
#if defined __native_client__ | |||
# include "ppapi/cpp/instance.h" | |||
# include "ppapi/cpp/module.h" | |||
# include "ppapi/cpp/var.h" | |||
#endif | |||
#include "core.h" | |||
#include "lolgl.h" | |||
#include "naclapp.h" | |||
namespace lol | |||
{ | |||
/* | |||
* PS3 App implementation class | |||
*/ | |||
class NaClAppData | |||
{ | |||
friend class NaClApp; | |||
private: | |||
#if defined __native_client__ | |||
#endif | |||
}; | |||
/* | |||
* Public NaClApp class | |||
*/ | |||
NaClApp::NaClApp(char const *title, ivec2 res, float fps) : | |||
data(new NaClAppData()) | |||
{ | |||
#if defined __native_client__ | |||
#endif | |||
} | |||
void NaClApp::ShowPointer(bool show) | |||
{ | |||
; | |||
} | |||
void NaClApp::Run() | |||
{ | |||
while (!Ticker::Finished()) | |||
{ | |||
/* Tick the game */ | |||
Ticker::TickGame(); | |||
/* Tick the renderer, show the frame and clamp to desired framerate. */ | |||
Ticker::TickDraw(); | |||
#if defined __native_client__ | |||
#endif | |||
Ticker::ClampFps(); | |||
} | |||
} | |||
NaClApp::~NaClApp() | |||
{ | |||
#if defined __native_client__ | |||
#endif | |||
delete data; | |||
} | |||
} /* namespace lol */ | |||
@@ -0,0 +1,42 @@ | |||
// | |||
// Lol Engine | |||
// | |||
// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net> | |||
// This program is free software; you can redistribute it and/or | |||
// modify it under the terms of the Do What The Fuck You Want To | |||
// Public License, Version 2, as published by Sam Hocevar. See | |||
// http://sam.zoy.org/projects/COPYING.WTFPL for more details. | |||
// | |||
// | |||
// The NaClApp class | |||
// ----------------- | |||
// | |||
#if !defined __LOL_NACLAPP_H__ | |||
#define __LOL_NACLAPP_H__ | |||
#include "matrix.h" | |||
namespace lol | |||
{ | |||
class NaClAppData; | |||
class NaClApp | |||
{ | |||
public: | |||
NaClApp(char const *title, ivec2 res, float fps); | |||
virtual ~NaClApp(); | |||
void ShowPointer(bool show); | |||
void Run(); | |||
private: | |||
NaClAppData *data; | |||
}; | |||
} /* namespace lol */ | |||
#endif // __LOL_NACLAPP_H__ | |||
@@ -18,6 +18,9 @@ | |||
#include <stdint.h> | |||
/* Avoid issues with NaCl headers */ | |||
#undef log2 | |||
namespace lol | |||
{ | |||
@@ -15,7 +15,7 @@ | |||
#include <cstdlib> | |||
#include <stdint.h> | |||
#if defined __linux__ || defined __APPLE__ | |||
#if defined __linux__ || defined __native_client__ || defined __APPLE__ | |||
# include <sys/time.h> | |||
# include <unistd.h> | |||
#elif defined _XBOX | |||
@@ -48,7 +48,7 @@ class TimerData | |||
private: | |||
TimerData() | |||
{ | |||
#if defined __linux__ || defined __APPLE__ | |||
#if defined __linux__ || defined __native_client__ || defined __APPLE__ | |||
gettimeofday(&tv0, NULL); | |||
#elif defined _WIN32 | |||
QueryPerformanceCounter(&cycles0); | |||
@@ -63,7 +63,7 @@ private: | |||
float GetOrWait(float deltams, bool update) | |||
{ | |||
float ret, towait; | |||
#if defined __linux__ || defined __APPLE__ | |||
#if defined __linux__ || defined __native_client__ || defined __APPLE__ | |||
struct timeval tv; | |||
gettimeofday(&tv, NULL); | |||
ret = 1e-3f * (tv.tv_usec - tv0.tv_usec) | |||
@@ -108,7 +108,7 @@ private: | |||
static float GetMsPerCycle() | |||
{ | |||
#if defined __linux__ || defined __APPLE__ | |||
#if defined __linux__ || defined __native_client__ || defined __APPLE__ | |||
return 1.0f; | |||
#elif defined _WIN32 | |||
LARGE_INTEGER tmp; | |||
@@ -121,7 +121,7 @@ private: | |||
#endif | |||
} | |||
#if defined __linux__ || defined __APPLE__ | |||
#if defined __linux__ || defined __native_client__ || defined __APPLE__ | |||
struct timeval tv0; | |||
#elif defined _WIN32 | |||
LARGE_INTEGER cycles0; | |||
@@ -73,7 +73,7 @@ void bench_trig(int mode) | |||
/* Fast sin */ | |||
timer.GetMs(); | |||
for (size_t i = 0; i < TRIG_TABLE_SIZE; i++) | |||
#if defined HAVE_FASTMATH_H | |||
#if defined HAVE_FASTMATH_H && !defined __native_client__ | |||
pf2[i] = f_sinf(pf[i]); | |||
#else | |||
pf2[i] = sinf(pf[i]); | |||
@@ -99,7 +99,7 @@ void bench_trig(int mode) | |||
/* Fast cos */ | |||
timer.GetMs(); | |||
for (size_t i = 0; i < TRIG_TABLE_SIZE; i++) | |||
#if defined HAVE_FASTMATH_H | |||
#if defined HAVE_FASTMATH_H && !defined __native_client__ | |||
pf2[i] = f_cosf(pf[i]); | |||
#else | |||
pf2[i] = cosf(pf[i]); | |||
@@ -130,7 +130,7 @@ void bench_trig(int mode) | |||
timer.GetMs(); | |||
for (size_t i = 0; i < TRIG_TABLE_SIZE; i++) | |||
{ | |||
#if defined HAVE_FASTMATH_H | |||
#if defined HAVE_FASTMATH_H && !defined __native_client__ | |||
pf2[i] = f_sinf(pf[i]); | |||
pf3[i] = f_cosf(pf[i]); | |||
#else | |||
@@ -159,7 +159,7 @@ void bench_trig(int mode) | |||
/* Fast tan */ | |||
timer.GetMs(); | |||
for (size_t i = 0; i < TRIG_TABLE_SIZE; i++) | |||
#if defined HAVE_FASTMATH_H | |||
#if defined HAVE_FASTMATH_H && !defined __native_client__ | |||
pf2[i] = f_tanf(pf[i]); | |||
#else | |||
pf2[i] = tanf(pf[i]); | |||
@@ -34,6 +34,10 @@ using namespace lol; | |||
static GLint const INTERNAL_FORMAT = GL_ARGB_SCE; | |||
static GLenum const TEXTURE_FORMAT = GL_BGRA; | |||
static GLenum const TEXTURE_TYPE = GL_UNSIGNED_INT_8_8_8_8_REV; | |||
#elif defined __native_client__ | |||
static GLint const INTERNAL_FORMAT = GL_RGBA; | |||
static GLenum const TEXTURE_FORMAT = GL_RGBA; | |||
static GLenum const TEXTURE_TYPE = GL_UNSIGNED_BYTE; | |||
#else | |||
/* Seems efficient for little endian textures */ | |||
static GLint const INTERNAL_FORMAT = GL_RGBA; | |||