X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fvertexdatainterpreter.cpp;h=a3012310e1349e7b4cf87bdad79671e281cbfecc;hb=c8695f74ce1ee6a93dee4b3f7da5a70a64706c82;hp=7e3616e35b517f079270a9dcc3b33e3ac28151d2;hpb=b934115a6648086783c48b479d390c35f10ac772;p=apitrace diff --git a/gui/vertexdatainterpreter.cpp b/gui/vertexdatainterpreter.cpp index 7e3616e..a301231 100644 --- a/gui/vertexdatainterpreter.cpp +++ b/gui/vertexdatainterpreter.cpp @@ -5,32 +5,27 @@ #include -#include - #include static int -sizeForType(int glType) -{ - switch(glType) { - case GL_FLOAT: - return sizeof(GLfloat); - case GL_UNSIGNED_BYTE: - return sizeof(GLubyte); - case GL_BYTE: - return sizeof(GLbyte); - case GL_SHORT: - return sizeof(GLshort); - case GL_UNSIGNED_SHORT: - return sizeof(GLushort); - case GL_INT: - return sizeof(GLint); - case GL_UNSIGNED_INT: - return sizeof(GLuint); - case GL_DOUBLE: - return sizeof(GLdouble); +sizeForType(int type) +{ + switch(type) { + case DT_INT8: + case DT_UINT8: + return 1; + case DT_INT16: + case DT_UINT16: + return 2; + case DT_INT32: + case DT_UINT32: + return 4; + case DT_FLOAT: + return sizeof(float); + case DT_DOUBLE: + return sizeof(double); default: - return sizeof(GLint); + return sizeof(int); } } @@ -39,23 +34,25 @@ static QStringList convertData(const QByteArray &dataArray, int type, int stride, - int numComponents) + int numComponents, + int startingOffset) { QStringList strings; - const char *data = dataArray.constData(); + int dataSize = dataArray.size() - startingOffset; + const char *data = dataArray.constData() + startingOffset; int typeSize = sizeForType(type); int elementSize = numComponents * typeSize; if (!stride) stride = elementSize; - int numElements = dataArray.size() / stride; + int numElements = dataSize / stride; if ((numElements % numComponents) != 0) { - int temp = qFloor(dataArray.size() / (float)stride); + int temp = qFloor(dataSize / (float)stride); int fullElemSize = temp * stride; - if (fullElemSize + numComponents * typeSize <= dataArray.size()){ + if (fullElemSize + numComponents * typeSize <= dataSize) { /* num full elements plus the part of the buffer in which we fit */ numElements = temp + 1; } else { @@ -94,9 +91,10 @@ convertData(const QByteArray &dataArray, VertexDataInterpreter::VertexDataInterpreter(QObject *parent) : QObject(parent), m_listWidget(0), - m_type(GL_FLOAT), + m_type(DT_FLOAT), m_stride(16), - m_components(4) + m_components(4), + m_startingOffset(0) { } @@ -159,29 +157,37 @@ void VertexDataInterpreter::interpretData() QStringList lst; switch(m_type) { - case GL_FLOAT: - lst = convertData(m_data, m_type, m_stride, m_components); + case DT_INT8: + lst = convertData(m_data, m_type, m_stride, m_components, + m_startingOffset); break; - case GL_UNSIGNED_BYTE: - lst = convertData(m_data, m_type, m_stride, m_components); + case DT_UINT8: + lst = convertData(m_data, m_type, m_stride, m_components, + m_startingOffset); break; - case GL_BYTE: - lst = convertData(m_data, m_type, m_stride, m_components); + case DT_INT16: + lst = convertData(m_data, m_type, m_stride, m_components, + m_startingOffset); break; - case GL_SHORT: - lst = convertData(m_data, m_type, m_stride, m_components); + case DT_UINT16: + lst = convertData(m_data, m_type, m_stride, m_components, + m_startingOffset); break; - case GL_UNSIGNED_SHORT: - lst = convertData(m_data, m_type, m_stride, m_components); + case DT_INT32: + lst = convertData(m_data, m_type, m_stride, m_components, + m_startingOffset); break; - case GL_INT: - lst = convertData(m_data, m_type, m_stride, m_components); + case DT_UINT32: + lst = convertData(m_data, m_type, m_stride, m_components, + m_startingOffset); break; - case GL_UNSIGNED_INT: - lst = convertData(m_data, m_type, m_stride, m_components); + case DT_FLOAT: + lst = convertData(m_data, m_type, m_stride, m_components, + m_startingOffset); break; - case GL_DOUBLE: - lst = convertData(m_data, m_type, m_stride, m_components); + case DT_DOUBLE: + lst = convertData(m_data, m_type, m_stride, m_components, + m_startingOffset); break; default: qDebug()<<"unkown gltype = "<