Android OpenGl-ES2 work corectly ==> many check is done ==> we can do it only one time by cycle
This commit is contained in:
parent
085b7cb9cd
commit
cc6d40f9d6
2
Build
2
Build
@ -1 +1 @@
|
|||||||
Subproject commit b4c2998dc8054173f0dd055ecd66411b96eaf8cd
|
Subproject commit c756ceacf5a758f882263bb5f0fbd755373f00b6
|
@ -41,6 +41,7 @@ import org.ewol.interfaceJNI;
|
|||||||
public class interfaceOpenGL implements GLSurfaceView.Renderer {
|
public class interfaceOpenGL implements GLSurfaceView.Renderer {
|
||||||
|
|
||||||
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
|
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
|
||||||
|
|
||||||
interfaceJNI.RenderInit();
|
interfaceJNI.RenderInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,6 +47,9 @@ public class interfaceSurfaceView extends GLSurfaceView {
|
|||||||
// super must be first statement in constructor
|
// super must be first statement in constructor
|
||||||
super(context);
|
super(context);
|
||||||
|
|
||||||
|
// Create an OpenGL ES 2.0 context
|
||||||
|
setEGLContextClientVersion(2);
|
||||||
|
|
||||||
// je n'ai pas compris ...
|
// je n'ai pas compris ...
|
||||||
m_ewolDrawer = new interfaceOpenGL();
|
m_ewolDrawer = new interfaceOpenGL();
|
||||||
setRenderer(m_ewolDrawer);
|
setRenderer(m_ewolDrawer);
|
||||||
|
@ -724,6 +724,7 @@ char * etk::File::fGets(char * elementLine, int32_t maxData)
|
|||||||
memset(elementLine, 0, maxData);
|
memset(elementLine, 0, maxData);
|
||||||
#ifdef __TARGET_OS__Android
|
#ifdef __TARGET_OS__Android
|
||||||
char * element = elementLine;
|
char * element = elementLine;
|
||||||
|
int32_t outSize = 0;
|
||||||
if (etk::FILE_TYPE_DATA == m_type) {//char * tmpData = internalDataFiles[iii].data + m_readingOffset;
|
if (etk::FILE_TYPE_DATA == m_type) {//char * tmpData = internalDataFiles[iii].data + m_readingOffset;
|
||||||
if (NULL == m_zipData) {
|
if (NULL == m_zipData) {
|
||||||
element[0] = '\0';
|
element[0] = '\0';
|
||||||
@ -750,8 +751,19 @@ char * etk::File::fGets(char * elementLine, int32_t maxData)
|
|||||||
*element = '\0';
|
*element = '\0';
|
||||||
return elementLine;
|
return elementLine;
|
||||||
}
|
}
|
||||||
|
// check maxData Size ...
|
||||||
|
if (outSize>=maxData-1) {
|
||||||
|
*element = '\0';
|
||||||
|
return elementLine;
|
||||||
}
|
}
|
||||||
|
outSize++;
|
||||||
|
}
|
||||||
|
if (outSize==0) {
|
||||||
return NULL;
|
return NULL;
|
||||||
|
} else {
|
||||||
|
// send last line
|
||||||
|
return elementLine;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return fgets(elementLine, maxData, m_PointerFile);
|
return fgets(elementLine, maxData, m_PointerFile);
|
||||||
|
@ -186,6 +186,36 @@ namespace etk {
|
|||||||
tmpp *= obj;
|
tmpp *= obj;
|
||||||
return tmpp;
|
return tmpp;
|
||||||
}
|
}
|
||||||
|
/*****************************************************
|
||||||
|
* other basic function :
|
||||||
|
*****************************************************/
|
||||||
|
void Transpose(void)
|
||||||
|
{
|
||||||
|
float tmpVal = m_mat[1];
|
||||||
|
m_mat[1] = m_mat[4];
|
||||||
|
m_mat[4] = tmpVal;
|
||||||
|
|
||||||
|
tmpVal = m_mat[2];
|
||||||
|
m_mat[2] = m_mat[8];
|
||||||
|
m_mat[8] = tmpVal;
|
||||||
|
|
||||||
|
tmpVal = m_mat[6];
|
||||||
|
m_mat[6] = m_mat[9];
|
||||||
|
m_mat[9] = tmpVal;
|
||||||
|
|
||||||
|
tmpVal = m_mat[3];
|
||||||
|
m_mat[3] = m_mat[12];
|
||||||
|
m_mat[12] = tmpVal;
|
||||||
|
|
||||||
|
tmpVal = m_mat[7];
|
||||||
|
m_mat[7] = m_mat[13];
|
||||||
|
m_mat[13] = tmpVal;
|
||||||
|
|
||||||
|
tmpVal = m_mat[11];
|
||||||
|
m_mat[11] = m_mat[14];
|
||||||
|
m_mat[14] = tmpVal;
|
||||||
|
|
||||||
|
}
|
||||||
};
|
};
|
||||||
namespace matrix {
|
namespace matrix {
|
||||||
Matrix Perspective(float left, float right, float bottom, float top, float nearVal, float farVal);
|
Matrix Perspective(float left, float right, float bottom, float top, float nearVal, float farVal);
|
||||||
|
@ -18,6 +18,7 @@ LOCAL_C_INCLUDES :=
|
|||||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
|
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
|
||||||
|
|
||||||
LOCAL_EXPORT_LDLIBS := -lGLESv2 -ldl -llog
|
LOCAL_EXPORT_LDLIBS := -lGLESv2 -ldl -llog
|
||||||
|
#LOCAL_EXPORT_LDLIBS := -lGLESv1_CM -ldl -llog
|
||||||
|
|
||||||
LOCAL_CFLAGS := -Wno-write-strings \
|
LOCAL_CFLAGS := -Wno-write-strings \
|
||||||
-DEWOL_VERSION_TAG_NAME="\"$(LOCAL_VERSION_TAG_SHORT)-$(BUILD_DIRECTORY_MODE)\"" \
|
-DEWOL_VERSION_TAG_NAME="\"$(LOCAL_VERSION_TAG_SHORT)-$(BUILD_DIRECTORY_MODE)\"" \
|
||||||
@ -32,9 +33,6 @@ include $(LOCAL_PATH)/file.mk
|
|||||||
|
|
||||||
LOCAL_SRC_FILES := ewol/os/gui.Android.cpp $(FILE_LIST)
|
LOCAL_SRC_FILES := ewol/os/gui.Android.cpp $(FILE_LIST)
|
||||||
|
|
||||||
# Ewol Test Software :
|
|
||||||
LOCAL_LDLIBS := -lGLESv2 -ldl -llog -lz
|
|
||||||
|
|
||||||
include $(BUILD_STATIC_LIBRARY)
|
include $(BUILD_STATIC_LIBRARY)
|
||||||
|
|
||||||
|
|
||||||
|
@ -120,6 +120,11 @@ ewol::TexturedFont::TexturedFont(etk::UString fontName) :
|
|||||||
}
|
}
|
||||||
int32_t nbLine = (nbElement / nbRaws) + 1;
|
int32_t nbLine = (nbElement / nbRaws) + 1;
|
||||||
int32_t textureHeight = nextP2(nbLine*glyphMaxHeight);
|
int32_t textureHeight = nextP2(nbLine*glyphMaxHeight);
|
||||||
|
// for android :
|
||||||
|
textureHeight = etk_max(textureHeight, textureWidth);
|
||||||
|
textureWidth = textureHeight;
|
||||||
|
|
||||||
|
|
||||||
EWOL_DEBUG("Generate a text texture for char(" << nbRaws << "," << nbLine << ") with size=(" << textureWidth << "," << textureHeight << ")");
|
EWOL_DEBUG("Generate a text texture for char(" << nbRaws << "," << nbLine << ") with size=(" << textureWidth << "," << textureHeight << ")");
|
||||||
// resize must be done on the texture ...
|
// resize must be done on the texture ...
|
||||||
SetImageSize(Vector2D<int32_t>(textureWidth,textureHeight));
|
SetImageSize(Vector2D<int32_t>(textureWidth,textureHeight));
|
||||||
|
@ -29,12 +29,15 @@
|
|||||||
#include <ewol/openGL/Program.h>
|
#include <ewol/openGL/Program.h>
|
||||||
#include <ewol/ResourceManager.h>
|
#include <ewol/ResourceManager.h>
|
||||||
|
|
||||||
|
//#define LOCAL_DEBUG EWOL_VERBOSE
|
||||||
|
#define LOCAL_DEBUG EWOL_DEBUG
|
||||||
|
|
||||||
ewol::Program::Program(etk::UString& filename) :
|
ewol::Program::Program(etk::UString& filename) :
|
||||||
ewol::Resource(filename),
|
ewol::Resource(filename),
|
||||||
m_program(0),
|
m_program(0),
|
||||||
m_hasTexture(false)
|
m_hasTexture(false)
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG("OGL : load PROGRAM \"" << filename << "\"");
|
||||||
// load data from file "all the time ..."
|
// load data from file "all the time ..."
|
||||||
|
|
||||||
etk::File file(m_name, etk::FILE_TYPE_DATA);
|
etk::File file(m_name, etk::FILE_TYPE_DATA);
|
||||||
@ -55,6 +58,7 @@ ewol::Program::Program(etk::UString& filename) :
|
|||||||
#define MAX_LINE_SIZE (2048)
|
#define MAX_LINE_SIZE (2048)
|
||||||
char tmpData[MAX_LINE_SIZE];
|
char tmpData[MAX_LINE_SIZE];
|
||||||
while (file.fGets(tmpData, MAX_LINE_SIZE) != NULL) {
|
while (file.fGets(tmpData, MAX_LINE_SIZE) != NULL) {
|
||||||
|
EWOL_DEBUG(" Read data : \"" << tmpData << "\"");
|
||||||
int32_t len = strlen(tmpData);
|
int32_t len = strlen(tmpData);
|
||||||
if( tmpData[len-1] == '\n'
|
if( tmpData[len-1] == '\n'
|
||||||
|| tmpData[len-1] == '\r') {
|
|| tmpData[len-1] == '\r') {
|
||||||
@ -96,10 +100,10 @@ ewol::Program::~Program(void)
|
|||||||
m_hasTexture = false;
|
m_hasTexture = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void checkGlError(const char* op)
|
static void checkGlError(const char* op, int32_t localLine)
|
||||||
{
|
{
|
||||||
for (GLint error = glGetError(); error; error = glGetError()) {
|
for (GLint error = glGetError(); error; error = glGetError()) {
|
||||||
EWOL_INFO("after " << op << "() glError (" << error << ")");
|
EWOL_INFO("after " << op << "():" << localLine << " glError(" << error << ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,18 +122,21 @@ bool ewol::Program::CreateAndLink(void)
|
|||||||
for (int32_t iii=0; iii<m_shaderList.Size(); iii++) {
|
for (int32_t iii=0; iii<m_shaderList.Size(); iii++) {
|
||||||
if (NULL != m_shaderList[iii]) {
|
if (NULL != m_shaderList[iii]) {
|
||||||
glAttachShader(m_program, m_shaderList[iii]->GetGL_ID());
|
glAttachShader(m_program, m_shaderList[iii]->GetGL_ID());
|
||||||
checkGlError("glAttachShader");
|
checkGlError("glAttachShader", __LINE__);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
glLinkProgram(m_program);
|
glLinkProgram(m_program);
|
||||||
|
checkGlError("glLinkProgram", __LINE__);
|
||||||
GLint linkStatus = GL_FALSE;
|
GLint linkStatus = GL_FALSE;
|
||||||
glGetProgramiv(m_program, GL_LINK_STATUS, &linkStatus);
|
glGetProgramiv(m_program, GL_LINK_STATUS, &linkStatus);
|
||||||
|
checkGlError("glGetProgramiv", __LINE__);
|
||||||
if (linkStatus != GL_TRUE) {
|
if (linkStatus != GL_TRUE) {
|
||||||
GLint bufLength = 0;
|
GLint bufLength = 0;
|
||||||
l_bufferDisplayError[0] = '\0';
|
l_bufferDisplayError[0] = '\0';
|
||||||
glGetProgramInfoLog(m_program, LOG_OGL_INTERNAL_BUFFER_LEN, &bufLength, l_bufferDisplayError);
|
glGetProgramInfoLog(m_program, LOG_OGL_INTERNAL_BUFFER_LEN, &bufLength, l_bufferDisplayError);
|
||||||
EWOL_ERROR("Could not compile \"PROGRAM\": " << l_bufferDisplayError);
|
EWOL_ERROR("Could not compile \"PROGRAM\": " << l_bufferDisplayError);
|
||||||
glDeleteProgram(m_program);
|
glDeleteProgram(m_program);
|
||||||
|
checkGlError("glDeleteProgram", __LINE__);
|
||||||
m_program = 0;
|
m_program = 0;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -149,7 +156,7 @@ int32_t ewol::Program::GetAttribute(etk::UString tmpElement)
|
|||||||
tmp.m_isAttribute = true;
|
tmp.m_isAttribute = true;
|
||||||
tmp.m_elementId = glGetAttribLocation(m_program, tmp.m_name.c_str());
|
tmp.m_elementId = glGetAttribLocation(m_program, tmp.m_name.c_str());
|
||||||
if (tmp.m_elementId<0) {
|
if (tmp.m_elementId<0) {
|
||||||
checkGlError("glGetAttribLocation");
|
checkGlError("glGetAttribLocation", __LINE__);
|
||||||
EWOL_INFO("glGetAttribLocation(\"" << tmp.m_name << "\") = " << tmp.m_elementId);
|
EWOL_INFO("glGetAttribLocation(\"" << tmp.m_name << "\") = " << tmp.m_elementId);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -170,7 +177,7 @@ int32_t ewol::Program::GetUniform(etk::UString tmpElement)
|
|||||||
tmp.m_isAttribute = false;
|
tmp.m_isAttribute = false;
|
||||||
tmp.m_elementId = glGetUniformLocation(m_program, tmp.m_name.c_str());
|
tmp.m_elementId = glGetUniformLocation(m_program, tmp.m_name.c_str());
|
||||||
if (tmp.m_elementId<0) {
|
if (tmp.m_elementId<0) {
|
||||||
checkGlError("glGetUniformLocation");
|
checkGlError("glGetUniformLocation", __LINE__);
|
||||||
EWOL_INFO("glGetUniformLocation(\"" << tmp.m_name << "\") = " << tmp.m_elementId);
|
EWOL_INFO("glGetUniformLocation(\"" << tmp.m_name << "\") = " << tmp.m_elementId);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -190,24 +197,29 @@ void ewol::Program::SendAttribute(int32_t idElem, int32_t nbElement, void* point
|
|||||||
GL_FALSE, // take our values as-is
|
GL_FALSE, // take our values as-is
|
||||||
jumpBetweenSample, // no extra data between each position
|
jumpBetweenSample, // no extra data between each position
|
||||||
pointer); // Pointer on the buffer
|
pointer); // Pointer on the buffer
|
||||||
|
checkGlError("glVertexAttribPointer", __LINE__);
|
||||||
glEnableVertexAttribArray(m_elementList[idElem].m_elementId);
|
glEnableVertexAttribArray(m_elementList[idElem].m_elementId);
|
||||||
|
checkGlError("glEnableVertexAttribArray", __LINE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ewol::Program::SendUniformMatrix4fv(int32_t idElem, int32_t nbElement, float* pointer)
|
void ewol::Program::SendUniformMatrix4fv(int32_t idElem, int32_t nbElement, etk::Matrix _matrix)
|
||||||
{
|
{
|
||||||
if (idElem<0 || idElem>m_elementList.Size()) {
|
if (idElem<0 || idElem>m_elementList.Size()) {
|
||||||
EWOL_ERROR("idElem = " << idElem << " not in [0.." << (m_elementList.Size()-1) << "]");
|
EWOL_ERROR("idElem = " << idElem << " not in [0.." << (m_elementList.Size()-1) << "]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
glUniformMatrix4fv(m_elementList[idElem].m_elementId, nbElement, GL_TRUE, pointer);
|
// note : Android des not supported the transposition of the matrix, then we will done it oursef:
|
||||||
|
_matrix.Transpose();
|
||||||
|
glUniformMatrix4fv(m_elementList[idElem].m_elementId, nbElement, GL_FALSE, _matrix.m_mat);
|
||||||
|
checkGlError("glUniformMatrix4fv", __LINE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ewol::Program::Use(void)
|
void ewol::Program::Use(void)
|
||||||
{
|
{
|
||||||
glUseProgram(m_program);
|
glUseProgram(m_program);
|
||||||
checkGlError("glUseProgram");
|
checkGlError("glUseProgram", __LINE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -216,23 +228,32 @@ void ewol::Program::SetTexture0(int32_t idElem, GLint textureOpenGlID)
|
|||||||
if (idElem<0 || idElem>m_elementList.Size()) {
|
if (idElem<0 || idElem>m_elementList.Size()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
checkGlError("glEnable", __LINE__);
|
||||||
|
#endif
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
|
checkGlError("glActiveTexture", __LINE__);
|
||||||
// set the textureID
|
// set the textureID
|
||||||
glBindTexture(GL_TEXTURE_2D, textureOpenGlID);
|
glBindTexture(GL_TEXTURE_2D, textureOpenGlID);
|
||||||
|
checkGlError("glBindTexture", __LINE__);
|
||||||
// Set the texture on the uniform attribute
|
// Set the texture on the uniform attribute
|
||||||
glUniform1i(m_elementList[idElem].m_elementId, /*GL_TEXTURE*/0);
|
glUniform1i(m_elementList[idElem].m_elementId, /*GL_TEXTURE*/0);
|
||||||
|
checkGlError("glUniform1i", __LINE__);
|
||||||
m_hasTexture = true;
|
m_hasTexture = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ewol::Program::UnUse(void)
|
void ewol::Program::UnUse(void)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
if (true == m_hasTexture) {
|
if (true == m_hasTexture) {
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
checkGlError("glDisable", __LINE__);
|
||||||
m_hasTexture = false;
|
m_hasTexture = false;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
glUseProgram(0);
|
glUseProgram(0);
|
||||||
checkGlError("glUseProgram");
|
checkGlError("glUseProgram", __LINE__);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
int32_t GetAttribute(etk::UString tmpElement);
|
int32_t GetAttribute(etk::UString tmpElement);
|
||||||
void SendAttribute(int32_t idElem, int32_t nbElement, void* pointer, int32_t jumpBetweenSample=0);
|
void SendAttribute(int32_t idElem, int32_t nbElement, void* pointer, int32_t jumpBetweenSample=0);
|
||||||
int32_t GetUniform(etk::UString tmpElement);
|
int32_t GetUniform(etk::UString tmpElement);
|
||||||
void SendUniformMatrix4fv(int32_t idElem, int32_t nbElement, float* pointer);
|
void SendUniformMatrix4fv(int32_t idElem, int32_t nbElement, etk::Matrix pointer);
|
||||||
void Use(void);
|
void Use(void);
|
||||||
void SetTexture0(int32_t idElem, GLint textureOpenGlID);
|
void SetTexture0(int32_t idElem, GLint textureOpenGlID);
|
||||||
void UnUse(void);
|
void UnUse(void);
|
||||||
|
@ -37,6 +37,7 @@ ewol::Shader::Shader(etk::UString& filename):
|
|||||||
m_shader(0),
|
m_shader(0),
|
||||||
m_type(0)
|
m_type(0)
|
||||||
{
|
{
|
||||||
|
EWOL_DEBUG("OGL : load SHADER \"" << filename << "\"");
|
||||||
// load data from file "all the time ..."
|
// load data from file "all the time ..."
|
||||||
|
|
||||||
etk::File file(m_name, etk::FILE_TYPE_DATA);
|
etk::File file(m_name, etk::FILE_TYPE_DATA);
|
||||||
@ -109,20 +110,32 @@ bool ewol::Shader::CompileAndSendShader(void)
|
|||||||
m_shader = 0;
|
m_shader = 0;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
EWOL_DEBUG(" --> Create");
|
||||||
m_shader = glCreateShader(m_type);
|
m_shader = glCreateShader(m_type);
|
||||||
|
EWOL_DEBUG(" <-- Create");
|
||||||
if (!m_shader) {
|
if (!m_shader) {
|
||||||
EWOL_ERROR("glCreateShader return error ...");
|
EWOL_ERROR("glCreateShader return error ...");
|
||||||
|
EWOL_DEBUG(" --> checkGlError");
|
||||||
checkGlError("glCreateShader");
|
checkGlError("glCreateShader");
|
||||||
|
EWOL_DEBUG(" <-- checkGlError");
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
|
EWOL_DEBUG(" --> glShaderSource");
|
||||||
glShaderSource(m_shader, 1, (const char**)&m_fileData, NULL);
|
glShaderSource(m_shader, 1, (const char**)&m_fileData, NULL);
|
||||||
|
EWOL_DEBUG(" <-- glShaderSource");
|
||||||
|
EWOL_DEBUG(" --> glCompileShader");
|
||||||
glCompileShader(m_shader);
|
glCompileShader(m_shader);
|
||||||
|
EWOL_DEBUG(" <-- glCompileShader");
|
||||||
GLint compiled = 0;
|
GLint compiled = 0;
|
||||||
|
EWOL_DEBUG(" --> glGetShaderiv");
|
||||||
glGetShaderiv(m_shader, GL_COMPILE_STATUS, &compiled);
|
glGetShaderiv(m_shader, GL_COMPILE_STATUS, &compiled);
|
||||||
|
EWOL_DEBUG(" <-- glGetShaderiv");
|
||||||
if (!compiled) {
|
if (!compiled) {
|
||||||
GLint infoLen = 0;
|
GLint infoLen = 0;
|
||||||
l_bufferDisplayError[0] = '\0';
|
l_bufferDisplayError[0] = '\0';
|
||||||
|
EWOL_DEBUG(" --> glGetShaderInfoLog");
|
||||||
glGetShaderInfoLog(m_shader, LOG_OGL_INTERNAL_BUFFER_LEN, &infoLen, l_bufferDisplayError);
|
glGetShaderInfoLog(m_shader, LOG_OGL_INTERNAL_BUFFER_LEN, &infoLen, l_bufferDisplayError);
|
||||||
|
EWOL_DEBUG(" <-- glGetShaderInfoLog");
|
||||||
const char * tmpShaderType = "GL_FRAGMENT_SHADER";
|
const char * tmpShaderType = "GL_FRAGMENT_SHADER";
|
||||||
if (m_type == GL_VERTEX_SHADER){
|
if (m_type == GL_VERTEX_SHADER){
|
||||||
tmpShaderType = "GL_VERTEX_SHADER";
|
tmpShaderType = "GL_VERTEX_SHADER";
|
||||||
|
@ -45,6 +45,7 @@ static Vector2D<int32_t> windowsSize(320, 480);
|
|||||||
static ewol::eSystemInput l_managementInput;
|
static ewol::eSystemInput l_managementInput;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
THREAD_INIT,
|
||||||
THREAD_RECALCULATE_SIZE,
|
THREAD_RECALCULATE_SIZE,
|
||||||
THREAD_RESIZE,
|
THREAD_RESIZE,
|
||||||
THREAD_HIDE,
|
THREAD_HIDE,
|
||||||
@ -104,6 +105,10 @@ void ewolProcessEvents(void)
|
|||||||
l_msgSystem.Wait(data);
|
l_msgSystem.Wait(data);
|
||||||
//EWOL_DEBUG("EVENT");
|
//EWOL_DEBUG("EVENT");
|
||||||
switch (data.TypeMessage) {
|
switch (data.TypeMessage) {
|
||||||
|
case THREAD_INIT:
|
||||||
|
// this is due to the openGL context
|
||||||
|
APP_Init();
|
||||||
|
break;
|
||||||
case THREAD_RECALCULATE_SIZE:
|
case THREAD_RECALCULATE_SIZE:
|
||||||
eSystem::ForceRedrawAll();
|
eSystem::ForceRedrawAll();
|
||||||
break;
|
break;
|
||||||
@ -226,11 +231,18 @@ void eSystem::SetArchiveDir(int mode, const char* str)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool isGlobalSystemInit = false;
|
bool isGlobalSystemInit = false;
|
||||||
|
|
||||||
|
void RequestInit(void)
|
||||||
|
{
|
||||||
|
if (true == isGlobalSystemInit) {
|
||||||
|
eSystemMessage_ts data;
|
||||||
|
data.TypeMessage = THREAD_INIT;
|
||||||
|
l_msgSystem.Post(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void eSystem::Init(void)
|
void eSystem::Init(void)
|
||||||
{
|
{
|
||||||
EWOL_INFO("==> Ewol System Init (BEGIN)");
|
EWOL_INFO("==> Ewol System Init (BEGIN)");
|
||||||
@ -248,8 +260,9 @@ void eSystem::Init(void)
|
|||||||
ewol::widgetManager::Init();
|
ewol::widgetManager::Init();
|
||||||
ewol::font::Init();
|
ewol::font::Init();
|
||||||
ewol::shortCut::Init();
|
ewol::shortCut::Init();
|
||||||
APP_Init();
|
|
||||||
isGlobalSystemInit = true;
|
isGlobalSystemInit = true;
|
||||||
|
// request the init of the application in the main context of openGL ...
|
||||||
|
RequestInit();
|
||||||
// force a recalculation
|
// force a recalculation
|
||||||
ewol::RequestUpdateSize();
|
ewol::RequestUpdateSize();
|
||||||
}
|
}
|
||||||
@ -279,6 +292,7 @@ void eSystem::UnInit(void)
|
|||||||
EWOL_INFO("==> Ewol System Un-Init (END)");
|
EWOL_INFO("==> Ewol System Un-Init (END)");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ewol::RequestUpdateSize(void)
|
void ewol::RequestUpdateSize(void)
|
||||||
{
|
{
|
||||||
if (true == isGlobalSystemInit) {
|
if (true == isGlobalSystemInit) {
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
#ifdef GL_ES
|
||||||
|
precision mediump float;
|
||||||
|
precision mediump int;
|
||||||
|
#endif
|
||||||
|
|
||||||
varying vec4 f_color;
|
varying vec4 f_color;
|
||||||
|
|
||||||
void main(void) {
|
void main(void) {
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
#ifdef GL_ES
|
||||||
|
precision mediump float;
|
||||||
|
precision mediump int;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Input :
|
// Input :
|
||||||
attribute vec2 EW_coord2d;
|
attribute vec2 EW_coord2d;
|
||||||
attribute vec4 EW_color;
|
attribute vec4 EW_color;
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
#ifdef GL_ES
|
||||||
|
precision mediump float;
|
||||||
|
precision mediump int;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Input :
|
// Input :
|
||||||
uniform sampler2D EW_texID;
|
uniform sampler2D EW_texID;
|
||||||
|
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
#ifdef GL_ES
|
||||||
|
precision mediump float;
|
||||||
|
precision mediump int;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Input :
|
// Input :
|
||||||
attribute vec2 EW_coord2d;
|
attribute vec2 EW_coord2d;
|
||||||
attribute vec2 EW_texture2d;
|
attribute vec2 EW_texture2d;
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
#ifdef GL_ES
|
||||||
|
precision mediump float;
|
||||||
|
precision mediump int;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Input :
|
// Input :
|
||||||
uniform sampler2D EW_texID;
|
uniform sampler2D EW_texID;
|
||||||
|
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
#ifdef GL_ES
|
||||||
|
precision mediump float;
|
||||||
|
precision mediump int;
|
||||||
|
#endif
|
||||||
// Input :
|
// Input :
|
||||||
attribute vec2 EW_coord3d;
|
attribute vec2 EW_coord3d;
|
||||||
attribute vec2 EW_texture2d;
|
attribute vec2 EW_texture2d;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user