[DEV] Add resource loading .obj files
This commit is contained in:
parent
ad78c67548
commit
e1d99c0646
@ -80,6 +80,6 @@ typedef struct {
|
|||||||
float h;
|
float h;
|
||||||
}clipping_ts;
|
}clipping_ts;
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <etk/math/math.h>
|
#include <etk/math/math.h>
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -25,16 +25,17 @@
|
|||||||
#ifndef __ETK_TYPES_MATRIX_H__
|
#ifndef __ETK_TYPES_MATRIX_H__
|
||||||
#define __ETK_TYPES_MATRIX_H__
|
#define __ETK_TYPES_MATRIX_H__
|
||||||
|
|
||||||
#include <etk/DebugInternal.h>
|
//#include <etk/DebugInternal.h>
|
||||||
#include <etk/math/Vector2D.h>
|
#include <etk/math/Vector2D.h>
|
||||||
#include <etk/Vector.h>
|
#include <etk/Vector.h>
|
||||||
|
|
||||||
namespace etk {
|
namespace etk
|
||||||
|
{
|
||||||
template <typename T> class Matrix
|
template <typename T> class Matrix
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
Vector2D<int32_t> m_size;
|
etk::Vector2D<int32_t> m_size;
|
||||||
Vector<T> m_data;
|
etk::Vector<T> m_data;
|
||||||
public:
|
public:
|
||||||
/*****************************************************
|
/*****************************************************
|
||||||
* Constructor
|
* Constructor
|
||||||
|
123
Sources/libewol/ewol/Mesh/Mesh.cpp
Normal file
123
Sources/libewol/ewol/Mesh/Mesh.cpp
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
/**
|
||||||
|
*******************************************************************************
|
||||||
|
* @file ewol/Mesh/Mesh.cpp
|
||||||
|
* @brief ewol Mesh system (sources)
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @date 30/10/2012
|
||||||
|
* @par Project
|
||||||
|
* ewol
|
||||||
|
*
|
||||||
|
* @par Copyright
|
||||||
|
* Copyright 2011 Edouard DUPIN, all right reserved
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY.
|
||||||
|
*
|
||||||
|
* Licence summary :
|
||||||
|
* You can modify and redistribute the sources code and binaries.
|
||||||
|
* You can send me the bug-fix
|
||||||
|
*
|
||||||
|
* Term of the licence in in the file licence.txt.
|
||||||
|
*
|
||||||
|
*******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include <ewol/Debug.h>
|
||||||
|
#include <ewol/Mesh/Mesh.h>
|
||||||
|
#include <ewol/ResourceManager.h>
|
||||||
|
|
||||||
|
|
||||||
|
ewol::Mesh::Mesh(etk::UString genName) :
|
||||||
|
ewol::Resource(genName),
|
||||||
|
m_texture1(NULL)
|
||||||
|
{
|
||||||
|
#ifdef __VIDEO__OPENGL_ES_2
|
||||||
|
etk::UString tmpString("textured3D.prog");
|
||||||
|
// get the shader resource :
|
||||||
|
m_GLPosition = 0;
|
||||||
|
if (true == ewol::resource::Keep(tmpString, m_GLprogram) ) {
|
||||||
|
m_GLPosition = m_GLprogram->GetAttribute("EW_coord3d");
|
||||||
|
m_GLColor = m_GLprogram->GetAttribute("EW_color");
|
||||||
|
m_GLtexture = m_GLprogram->GetAttribute("EW_texture2d");
|
||||||
|
m_GLMatrix = m_GLprogram->GetUniform("EW_MatrixTransformation");
|
||||||
|
m_GLtexID = m_GLprogram->GetUniform("EW_texID");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
ewol::Mesh::~Mesh(void)
|
||||||
|
{
|
||||||
|
// remove dynamics dependencies :
|
||||||
|
if(NULL!=m_texture1) {
|
||||||
|
ewol::resource::Release(m_texture1);
|
||||||
|
}
|
||||||
|
#ifdef __VIDEO__OPENGL_ES_2
|
||||||
|
ewol::resource::Release(m_GLprogram);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ewol::Mesh::Draw(void)
|
||||||
|
{
|
||||||
|
static float rotx = 0;
|
||||||
|
static float roty = 0;
|
||||||
|
static float rotz = 0;
|
||||||
|
rotx += 0.01;
|
||||||
|
roty += 0.02;
|
||||||
|
rotz += 0.005;
|
||||||
|
if (m_vertices.Size()<=0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (NULL == m_texture1) {
|
||||||
|
EWOL_WARNING("Texture does not exist ...");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#ifdef __VIDEO__OPENGL_ES_2
|
||||||
|
if (m_GLprogram==NULL) {
|
||||||
|
EWOL_ERROR("No shader ...");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//EWOL_DEBUG(" Display " << m_coord.Size() << " elements" );
|
||||||
|
m_GLprogram->Use();
|
||||||
|
// set Matrix : translation/positionMatrix
|
||||||
|
etk::Matrix4 tmpMatrix = ewol::openGL::GetMatrix();
|
||||||
|
tmpMatrix = etk::matrix::Scale(100,100,100)
|
||||||
|
* etk::matrix::rotate(1,0,0,rotx)
|
||||||
|
* etk::matrix::rotate(0,1,0,roty)
|
||||||
|
* etk::matrix::Translate(0.01,0,0)
|
||||||
|
* etk::matrix::rotate(0,0,1,rotz)
|
||||||
|
* tmpMatrix;
|
||||||
|
m_GLprogram->UniformMatrix4fv(m_GLMatrix, 1, tmpMatrix.m_mat);
|
||||||
|
// TextureID
|
||||||
|
m_GLprogram->SetTexture0(m_GLtexID, m_texture1->GetId());
|
||||||
|
// position :
|
||||||
|
m_GLprogram->SendAttribute(m_GLPosition, 3/*x,y,z*/, &m_vertices[0]);
|
||||||
|
// Texture :
|
||||||
|
m_GLprogram->SendAttribute(m_GLtexture, 2/*u,v*/, &m_uvTextures[0]);
|
||||||
|
// color :
|
||||||
|
m_GLprogram->SendAttribute(m_GLColor, 4/*r,g,b,a*/, &m_coordColor[0]);
|
||||||
|
// Request the draw od the elements :
|
||||||
|
glDrawArrays(GL_TRIANGLES, 0, m_vertices.Size());
|
||||||
|
m_GLprogram->UnUse();
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
glColor4f(1.0, 1.0, 1.0, 1.0);
|
||||||
|
glEnable(GL_TEXTURE_2D);
|
||||||
|
//EWOL_WARNING("Draw with texture : " << m_textureId << " ==> ogl=" << ewol::texture::GetGLID(m_textureId));
|
||||||
|
glBindTexture(GL_TEXTURE_2D, m_resource->GetId() );
|
||||||
|
glEnableClientState( GL_VERTEX_ARRAY ); // Enable Vertex Arrays
|
||||||
|
glEnableClientState( GL_TEXTURE_COORD_ARRAY ); // Enable Texture Coord Arrays
|
||||||
|
glEnableClientState( GL_COLOR_ARRAY ); // Enable Color Arrays
|
||||||
|
glVertexPointer( 3, GL_FLOAT, 0, &m_coord[0] );
|
||||||
|
glTexCoordPointer( 2, GL_FLOAT, 0, &m_coordTex[0] );
|
||||||
|
glColorPointer( 4, GL_UNSIGNED_BYTE, 0, &m_coordColor[0] );
|
||||||
|
glDrawArrays( GL_TRIANGLES, 0, m_coord.Size());
|
||||||
|
//EWOL_DEBUG("request draw of " << m_coord.Size() << " elements");
|
||||||
|
glDisableClientState( GL_COLOR_ARRAY ); // Disable Color Arrays
|
||||||
|
glDisableClientState( GL_VERTEX_ARRAY ); // Disable Vertex Arrays
|
||||||
|
glDisableClientState( GL_TEXTURE_COORD_ARRAY ); // Disable Texture Coord Arrays
|
||||||
|
glDisable(GL_TEXTURE_2D);
|
||||||
|
*/
|
||||||
|
#endif
|
||||||
|
}
|
67
Sources/libewol/ewol/Mesh/Mesh.h
Normal file
67
Sources/libewol/ewol/Mesh/Mesh.h
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
/**
|
||||||
|
*******************************************************************************
|
||||||
|
* @file ewol/Mesh/Mesh.h
|
||||||
|
* @brief ewol Mesh system (header)
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @date 30/10/2012
|
||||||
|
* @par Project
|
||||||
|
* ewol
|
||||||
|
*
|
||||||
|
* @par Copyright
|
||||||
|
* Copyright 2011 Edouard DUPIN, all right reserved
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY.
|
||||||
|
*
|
||||||
|
* Licence summary :
|
||||||
|
* You can modify and redistribute the sources code and binaries.
|
||||||
|
* You can send me the bug-fix
|
||||||
|
*
|
||||||
|
* Term of the licence in in the file licence.txt.
|
||||||
|
*
|
||||||
|
*******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MESH_H__
|
||||||
|
#define __MESH_H__
|
||||||
|
|
||||||
|
#include <etk/Types.h>
|
||||||
|
#include <ewol/Resource.h>
|
||||||
|
#include <ewol/texture/TextureFile.h>
|
||||||
|
#include <ewol/openGL/Shader.h>
|
||||||
|
#include <ewol/openGL/Program.h>
|
||||||
|
|
||||||
|
namespace ewol
|
||||||
|
{
|
||||||
|
class Mesh : public ewol::Resource
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
#ifdef __VIDEO__OPENGL_ES_2
|
||||||
|
ewol::Program* m_GLprogram;
|
||||||
|
int32_t m_GLPosition;
|
||||||
|
int32_t m_GLMatrix;
|
||||||
|
int32_t m_GLColor;
|
||||||
|
int32_t m_GLtexture;
|
||||||
|
int32_t m_GLtexID;
|
||||||
|
#endif
|
||||||
|
etk::Vector<uint32_t> m_indices;
|
||||||
|
etk::Vector< etk::Vector3D<float> > m_vertices;
|
||||||
|
etk::Vector< etk::Vector2D<float> > m_uvTextures;
|
||||||
|
etk::Vector< etk::Vector3D<float> > m_normals;
|
||||||
|
ewol::TextureFile* m_texture1;
|
||||||
|
#ifdef __VIDEO__OPENGL_ES_2
|
||||||
|
etk::Vector<draw::Colorf> m_coordColor; //!< internal color of the different point
|
||||||
|
#else
|
||||||
|
etk::Vector<draw::Color> m_coordColor; //!< internal color of the different point
|
||||||
|
#endif
|
||||||
|
public:
|
||||||
|
Mesh(etk::UString genName);
|
||||||
|
virtual ~Mesh(void);
|
||||||
|
virtual const char* GetType(void) { return "ewol::Mesh"; };
|
||||||
|
virtual void Draw(void);
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
172
Sources/libewol/ewol/Mesh/MeshObj.cpp
Normal file
172
Sources/libewol/ewol/Mesh/MeshObj.cpp
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
/**
|
||||||
|
*******************************************************************************
|
||||||
|
* @file ewol/Mesh/MeshObj.cpp
|
||||||
|
* @brief ewol Mesh ;obj loader system (sources)
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @date 30/10/2012
|
||||||
|
* @par Project
|
||||||
|
* ewol
|
||||||
|
*
|
||||||
|
* @par Copyright
|
||||||
|
* Copyright 2011 Edouard DUPIN, all right reserved
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY.
|
||||||
|
*
|
||||||
|
* Licence summary :
|
||||||
|
* You can modify and redistribute the sources code and binaries.
|
||||||
|
* You can send me the bug-fix
|
||||||
|
*
|
||||||
|
* Term of the licence in in the file licence.txt.
|
||||||
|
*
|
||||||
|
*******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ewol/Debug.h>
|
||||||
|
#include <etk/Vector.h>
|
||||||
|
#include <etk/os/File.h>
|
||||||
|
#include <ewol/Mesh/MeshObj.h>
|
||||||
|
#include <ewol/ResourceManager.h>
|
||||||
|
|
||||||
|
|
||||||
|
ewol::MeshObj::MeshObj(etk::UString _fileName) :
|
||||||
|
ewol::Mesh(_fileName)
|
||||||
|
{
|
||||||
|
etk::File fileName(_fileName, etk::FILE_TYPE_DATA);
|
||||||
|
// Get the fileSize ...
|
||||||
|
int32_t size = fileName.Size();
|
||||||
|
if (size == 0 ) {
|
||||||
|
EWOL_ERROR("No data in the file named=\"" << fileName << "\"");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(false == fileName.fOpenRead() ) {
|
||||||
|
EWOL_ERROR("Can not find the file name=\"" << fileName << "\"");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
char inputDataLine[2018];
|
||||||
|
|
||||||
|
|
||||||
|
etk::Vector<int32_t> indicesVertices;
|
||||||
|
etk::Vector<int32_t> indicesUv;
|
||||||
|
etk::Vector<int32_t> indicesNormal;
|
||||||
|
etk::Vector< etk::Vector3D<float> > vertices;
|
||||||
|
etk::Vector< etk::Vector2D<float> > uvTextures;
|
||||||
|
etk::Vector< etk::Vector3D<float> > normals;
|
||||||
|
|
||||||
|
|
||||||
|
while (NULL != fileName.fGets(inputDataLine, 2048) )
|
||||||
|
{
|
||||||
|
if (inputDataLine[0]=='v') {
|
||||||
|
if (inputDataLine[1]=='n') {
|
||||||
|
// Vertice normal : vn 0.000000 0.000000 -1.000000
|
||||||
|
etk::Vector3D<float> vertex;
|
||||||
|
sscanf(&inputDataLine[3], "%f %f %f", &vertex.x, &vertex.y, &vertex.z );
|
||||||
|
normals.PushBack(vertex);
|
||||||
|
} else if (inputDataLine[1]=='t') {
|
||||||
|
// Texture position : vt 0.748573 0.750412
|
||||||
|
etk::Vector2D<float> vertex;
|
||||||
|
sscanf(&inputDataLine[3], "%f %f", &vertex.x, &vertex.y);
|
||||||
|
uvTextures.PushBack(vertex);
|
||||||
|
} else {
|
||||||
|
// Vertice position : v 1.000000 -1.000000 -1.000000
|
||||||
|
etk::Vector3D<float> vertex;
|
||||||
|
sscanf(&inputDataLine[2], "%f %f %f", &vertex.x, &vertex.y, &vertex.z );
|
||||||
|
vertices.PushBack(vertex);
|
||||||
|
}
|
||||||
|
} else if (inputDataLine[0]=='f') {
|
||||||
|
// face : f 5/1/1 1/2/1 4/3/1*
|
||||||
|
uint32_t vertexIndex[3], uvIndex[3], normalIndex[3];
|
||||||
|
int32_t matches = sscanf(&inputDataLine[2], "%d/%d/%d %d/%d/%d %d/%d/%d\n",
|
||||||
|
&vertexIndex[0], &uvIndex[0], &normalIndex[0],
|
||||||
|
&vertexIndex[1], &uvIndex[1], &normalIndex[1],
|
||||||
|
&vertexIndex[2], &uvIndex[2], &normalIndex[2] );
|
||||||
|
if (9 != matches){
|
||||||
|
EWOL_ERROR("Parsing error in the .obj files : " << fileName);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
indicesVertices.PushBack(vertexIndex[0]);
|
||||||
|
indicesVertices.PushBack(vertexIndex[1]);
|
||||||
|
indicesVertices.PushBack(vertexIndex[2]);
|
||||||
|
indicesUv.PushBack(uvIndex[0]);
|
||||||
|
indicesUv.PushBack(uvIndex[1]);
|
||||||
|
indicesUv.PushBack(uvIndex[2]);
|
||||||
|
indicesNormal.PushBack(normalIndex[0]);
|
||||||
|
indicesNormal.PushBack(normalIndex[1]);
|
||||||
|
indicesNormal.PushBack(normalIndex[2]);
|
||||||
|
|
||||||
|
} else if (inputDataLine[0]=='s') {
|
||||||
|
// ??? : s off
|
||||||
|
} else if (inputDataLine[0]=='#') {
|
||||||
|
// comment
|
||||||
|
// nothing to do ... just go to the new line ...
|
||||||
|
} else if( inputDataLine[0]=='u'
|
||||||
|
&& inputDataLine[1]=='s'
|
||||||
|
&& inputDataLine[2]=='e'
|
||||||
|
&& inputDataLine[3]=='m'
|
||||||
|
&& inputDataLine[4]=='t'
|
||||||
|
&& inputDataLine[5]=='l' ) {
|
||||||
|
// Use Material : usemtl imageName.xxx
|
||||||
|
while( inputDataLine[strlen(inputDataLine)-1] == '\n'
|
||||||
|
|| inputDataLine[strlen(inputDataLine)-1] == '\r'
|
||||||
|
|| inputDataLine[strlen(inputDataLine)-1] == ' ') {
|
||||||
|
if (1 == strlen(inputDataLine) ){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
inputDataLine[strlen(inputDataLine)-1] = '\0';
|
||||||
|
}
|
||||||
|
etk::UString tmpVal(&inputDataLine[7]);
|
||||||
|
etk::Vector2D<int32_t> tmpSize(256, 256);
|
||||||
|
if (NULL != m_texture1) {
|
||||||
|
EWOL_INFO("Release previous loaded texture ... ");
|
||||||
|
ewol::resource::Release(m_texture1);
|
||||||
|
}
|
||||||
|
if (false == ewol::resource::Keep(tmpVal, m_texture1, tmpSize)) {
|
||||||
|
EWOL_ERROR("Can not load specific texture : " << tmpVal);
|
||||||
|
}
|
||||||
|
} else if( inputDataLine[0]=='m'
|
||||||
|
&& inputDataLine[1]=='t'
|
||||||
|
&& inputDataLine[2]=='l'
|
||||||
|
&& inputDataLine[3]=='l'
|
||||||
|
&& inputDataLine[4]=='i'
|
||||||
|
&& inputDataLine[5]=='b' ) {
|
||||||
|
// ???? : mtllib cube.mtl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fileName.fClose();
|
||||||
|
// For each vertex of each triangle
|
||||||
|
for( uint32_t iii=0; iii<indicesVertices.Size(); iii++ ){
|
||||||
|
// Get the indices of its attributes
|
||||||
|
uint32_t vertexIndex = indicesVertices[iii];
|
||||||
|
uint32_t uvIndex = indicesUv[iii];
|
||||||
|
uint32_t normalIndex = indicesNormal[iii];
|
||||||
|
|
||||||
|
// Put the attributes in buffers
|
||||||
|
m_vertices.PushBack(vertices[vertexIndex-1]);
|
||||||
|
m_uvTextures.PushBack(uvTextures[uvIndex-1]);
|
||||||
|
m_normals.PushBack(normals[normalIndex-1]);
|
||||||
|
draw::Color tmpppp(0xFFFFFFFF);
|
||||||
|
draw::Colorf tmppppp(tmpppp);
|
||||||
|
m_coordColor.PushBack(tmppppp);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
// Read our .obj file
|
||||||
|
std::vector vertices;
|
||||||
|
std::vector uvs;
|
||||||
|
std::vector normals; // Won't be used at the moment.
|
||||||
|
bool res = loadOBJ("cube.obj", vertices, uvs, normals);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW);
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
48
Sources/libewol/ewol/Mesh/MeshObj.h
Normal file
48
Sources/libewol/ewol/Mesh/MeshObj.h
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/**
|
||||||
|
*******************************************************************************
|
||||||
|
* @file ewol/Mesh/MeshObj.h
|
||||||
|
* @brief ewol Mesh ;obj loader system (header)
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @date 30/10/2012
|
||||||
|
* @par Project
|
||||||
|
* ewol
|
||||||
|
*
|
||||||
|
* @par Copyright
|
||||||
|
* Copyright 2011 Edouard DUPIN, all right reserved
|
||||||
|
*
|
||||||
|
* This software is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY.
|
||||||
|
*
|
||||||
|
* Licence summary :
|
||||||
|
* You can modify and redistribute the sources code and binaries.
|
||||||
|
* You can send me the bug-fix
|
||||||
|
*
|
||||||
|
* Term of the licence in in the file licence.txt.
|
||||||
|
*
|
||||||
|
*******************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __MESH_OBJ_H__
|
||||||
|
#define __MESH_OBJ_H__
|
||||||
|
|
||||||
|
#include <etk/Types.h>
|
||||||
|
#include <etk/UString.h>
|
||||||
|
#include <ewol/Mesh/Mesh.h>
|
||||||
|
|
||||||
|
namespace ewol
|
||||||
|
{
|
||||||
|
class MeshObj : public ewol::Mesh
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MeshObj(etk::UString fileName);
|
||||||
|
~MeshObj(void) { };
|
||||||
|
virtual const char* GetType(void) { return "ewol::MeshObj"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -22,13 +22,13 @@
|
|||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __RESOURCES_H__
|
|
||||||
#define __RESOURCES_H__
|
|
||||||
|
|
||||||
#include <etk/Types.h>
|
#include <etk/Types.h>
|
||||||
#include <etk/UString.h>
|
#include <etk/UString.h>
|
||||||
#include <ewol/Debug.h>
|
#include <ewol/Debug.h>
|
||||||
|
|
||||||
|
#ifndef __RESOURCES_H__
|
||||||
|
#define __RESOURCES_H__
|
||||||
|
|
||||||
#define MAX_RESOURCE_LEVEL (5)
|
#define MAX_RESOURCE_LEVEL (5)
|
||||||
|
|
||||||
namespace ewol
|
namespace ewol
|
||||||
|
@ -349,6 +349,18 @@ bool ewol::resource::Keep(etk::UString& filename, ewol::TextureFile*& object, et
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ewol::resource::Keep(etk::UString& filename, ewol::MeshObj*& object)
|
||||||
|
{
|
||||||
|
// this element create a new one every time ....
|
||||||
|
object = new ewol::MeshObj(filename);
|
||||||
|
if (NULL == object) {
|
||||||
|
EWOL_ERROR("allocation error of a resource : ??Mesh.obj??");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
LocalAdd(object);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool ewol::resource::Keep(etk::UString& accesMode, ewol::VirtualBufferObject*& object)
|
bool ewol::resource::Keep(etk::UString& accesMode, ewol::VirtualBufferObject*& object)
|
||||||
{
|
{
|
||||||
@ -446,3 +458,9 @@ void ewol::resource::Release(ewol::TextureFile*& object)
|
|||||||
object = NULL;
|
object = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ewol::resource::Release(ewol::MeshObj*& object)
|
||||||
|
{
|
||||||
|
ewol::Resource* object2 = static_cast<ewol::Resource*>(object);
|
||||||
|
Release(object2);
|
||||||
|
object = NULL;
|
||||||
|
}
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include <ewol/font/DistantFieldFont.h>
|
#include <ewol/font/DistantFieldFont.h>
|
||||||
#include <ewol/texture/Texture.h>
|
#include <ewol/texture/Texture.h>
|
||||||
#include <ewol/texture/TextureFile.h>
|
#include <ewol/texture/TextureFile.h>
|
||||||
|
#include <ewol/Mesh/MeshObj.h>
|
||||||
|
|
||||||
namespace ewol
|
namespace ewol
|
||||||
{
|
{
|
||||||
@ -63,6 +64,7 @@ namespace ewol
|
|||||||
bool Keep(ewol::Texture*& object); // no name needed here ...
|
bool Keep(ewol::Texture*& object); // no name needed here ...
|
||||||
bool Keep(etk::UString& filename, ewol::TextureFile*& object, etk::Vector2D<int32_t> size);
|
bool Keep(etk::UString& filename, ewol::TextureFile*& object, etk::Vector2D<int32_t> size);
|
||||||
bool Keep(etk::UString& accesMode, ewol::VirtualBufferObject*& object);
|
bool Keep(etk::UString& accesMode, ewol::VirtualBufferObject*& object);
|
||||||
|
bool Keep(etk::UString& filename, ewol::MeshObj*& object);
|
||||||
|
|
||||||
void Release(ewol::Resource*& object);
|
void Release(ewol::Resource*& object);
|
||||||
void Release(ewol::TexturedFont*& object);
|
void Release(ewol::TexturedFont*& object);
|
||||||
@ -75,6 +77,7 @@ namespace ewol
|
|||||||
void Release(ewol::Texture*& object);
|
void Release(ewol::Texture*& object);
|
||||||
void Release(ewol::TextureFile*& object);
|
void Release(ewol::TextureFile*& object);
|
||||||
void Release(ewol::VirtualBufferObject*& object);
|
void Release(ewol::VirtualBufferObject*& object);
|
||||||
|
void Release(ewol::MeshObj*& object);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ ewol::TextureFile::TextureFile(etk::UString genName, etk::UString tmpfileName, e
|
|||||||
// load data
|
// load data
|
||||||
etk::File fileName(tmpfileName, etk::FILE_TYPE_DATA);
|
etk::File fileName(tmpfileName, etk::FILE_TYPE_DATA);
|
||||||
if (false == fileName.Exist()) {
|
if (false == fileName.Exist()) {
|
||||||
EWOL_ERROR("File does not Exist ... " << fileName);
|
EWOL_ERROR("File does not Exist ... " << fileName << " from : " << tmpfileName);
|
||||||
} else {
|
} else {
|
||||||
// get the upper paw2 ot the size requested...
|
// get the upper paw2 ot the size requested...
|
||||||
if (size.x>0 && size.y>0) {
|
if (size.x>0 && size.y>0) {
|
||||||
|
@ -47,6 +47,11 @@ FILE_LIST+= ewol/font/FontManager.cpp \
|
|||||||
ewol/font/TexturedFont.cpp \
|
ewol/font/TexturedFont.cpp \
|
||||||
ewol/font/DistantFieldFont.cpp
|
ewol/font/DistantFieldFont.cpp
|
||||||
|
|
||||||
|
# Mesh management
|
||||||
|
FILE_LIST+= ewol/Mesh/Mesh.cpp \
|
||||||
|
ewol/Mesh/MeshObj.cpp
|
||||||
|
|
||||||
|
|
||||||
# all widgets
|
# all widgets
|
||||||
FILE_LIST+= ewol/widget/Widget.cpp \
|
FILE_LIST+= ewol/widget/Widget.cpp \
|
||||||
ewol/widget/WidgetManager.cpp \
|
ewol/widget/WidgetManager.cpp \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user