[DEV] update open GL interface

This commit is contained in:
Edouard DUPIN 2014-11-07 23:35:16 +01:00
parent 8ff2bfc20f
commit 627584f13d
3 changed files with 68 additions and 1 deletions

2
external/etk vendored

@ -1 +1 @@
Subproject commit 45c4fbb98db6b5b50599dfaef5903d3a78e63f08
Subproject commit ceab3d4d7d578d818aa7fba11e86fa3557f14d36

View File

@ -9,6 +9,7 @@
#include <vector>
#include <ewol/debug.h>
#include <ewol/openGL/openGL.h>
#include <etk/stdTools.h>
#include <mutex>
//#define DIRECT_MODE
/**
@ -165,6 +166,59 @@ std::ostream& ewol::operator <<(std::ostream& _os, const enum openGL::openGlFlag
return _os;
}
std::vector<std::pair<enum ewol::openGL::renderMode, std::string>>& getListRenderMode() {
static std::vector<std::pair<enum ewol::openGL::renderMode, std::string>> list = {
std::make_pair(ewol::openGL::renderPoint, "POINTS"),
std::make_pair(ewol::openGL::renderLine, "LINES"),
std::make_pair(ewol::openGL::renderLineStrip, "LINES_STRIP"),
std::make_pair(ewol::openGL::renderLineLoop, "LINE_LOOP"),
std::make_pair(ewol::openGL::renderTriangle, "TRIANGLE"),
std::make_pair(ewol::openGL::renderTriangleStrip, "TRIANGLE_STRIP"),
std::make_pair(ewol::openGL::renderTriangleFan, "TRIANGLE_FAN"),
std::make_pair(ewol::openGL::renderQuad, "QUAD"),
std::make_pair(ewol::openGL::renderQuadStrip, "QUAD_STRIP"),
std::make_pair(ewol::openGL::renderPolygon, "POLYGON"),
};
return list;
}
namespace etk {
template<> std::string to_string<ewol::openGL::renderMode>(const ewol::openGL::renderMode& _obj) {
for (auto &it : getListRenderMode()) {
if (it.first == _obj) {
return it.second;
}
}
EWOL_ERROR("Can not convert : " << static_cast<int32_t>(_obj) << " return UNKNOW");
return "UNKNOW";
}
template<> std::u32string to_u32string<ewol::openGL::renderMode>(const ewol::openGL::renderMode& _obj) {
return etk::to_u32string(etk::to_string(_obj));
}
template<> bool from_string<ewol::openGL::renderMode>(ewol::openGL::renderMode& _variableRet, const std::string& _value) {
for (auto &it : getListRenderMode()) {
if (it.second == _value) {
_variableRet = it.first;
return true;
}
}
EWOL_WARNING("Can not parse : '" << _value << "' set Triangle default value");
_variableRet = ewol::openGL::renderTriangle;
return false;
}
template<> bool from_string<ewol::openGL::renderMode>(ewol::openGL::renderMode& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, etk::to_string(_value));
}
};
std::ostream& ewol::operator <<(std::ostream& _os, const enum openGL::renderMode& _obj) {
_os << etk::to_string(_obj);
return _os;
}
typedef struct {
uint32_t curentFlag;
GLenum OGlFlag;

View File

@ -141,6 +141,18 @@ namespace ewol {
FLAG_ALPHA_TEST = 1<<27, //!<
FLAG_FOG = 1<<28, //!<
};
enum renderMode {
renderPoint = GL_POINTS,
renderLine = GL_LINES,
renderLineStrip = GL_LINE_STRIP, //!< Not supported in EWOL (TODO : Later)
renderLineLoop = GL_LINE_LOOP,
renderTriangle = GL_TRIANGLES,
renderTriangleStrip = GL_TRIANGLE_STRIP, //!< Not supported in EWOL (TODO : Later)
renderTriangleFan = GL_TRIANGLE_FAN, //!< Not supported in EWOL (TODO : Later)
renderQuad = GL_QUADS, //!< Not supported in OpenGL-ES2
renderQuadStrip = GL_QUAD_STRIP, //!< Not supported in OpenGL-ES2
renderPolygon = GL_POLYGON //!< Not supported in OpenGL-ES2
};
/**
* @brief enable a flag on the system
@ -181,6 +193,7 @@ namespace ewol {
void reset();
};
std::ostream& operator <<(std::ostream& _os, const enum openGL::openGlFlags& _obj);
std::ostream& operator <<(std::ostream& _os, const enum openGL::renderMode& _obj);
};