4#ifndef QSSGMESHUTILITIES_P_H 
    5#define QSSGMESHUTILITIES_P_H 
   18#include <QtQuick3DUtils/private/qtquick3dutilsglobal_p.h> 
   20#include <QtQuick3DUtils/private/qssgbounds3_p.h> 
   22#include <QtQuick3DUtils/private/qssgrenderbasetypes_p.h> 
   24#include <QtCore/qstring.h> 
   25#include <QtCore/qbytearray.h> 
   26#include <QtCore/qiodevice.h> 
   27#include <QtCore/qmap.h> 
   33struct AssetVertexEntry;
 
   34struct AssetMeshSubset;
 
   35struct RuntimeMeshData;
 
   38class Q_QUICK3DUTILS_EXPORT 
Mesh 
  109                              ComponentType indexComponentType,
 
  116    bool isValid()
 const { 
return !m_subsets.isEmpty(); }
 
  124    bool hasLightmapUVChannel() 
const;
 
  125    bool createLightmapUVChannel(
uint lightmapBaseResolution);
 
  128    DrawMode m_drawMode = DrawMode::Triangles;
 
  129    Winding m_winding = Winding::CounterClockwise;
 
  130    VertexBuffer m_vertexBuffer;
 
  131    IndexBuffer m_indexBuffer;
 
  132    TargetBuffer m_targetBuffer;
 
  151    quint32 boundsPositionEntryIndex = std::numeric_limits<quint32>::max();
 
  171            TexCoord0Semantic = TexCoordSemantic    
 
  180            case IndexSemantic:             
return 1;
 
  181            case PositionSemantic:          
return 3;
 
  182            case NormalSemantic:            
return 3;
 
  183            case TexCoord0Semantic:         
return 2;
 
  184            case TexCoord1Semantic:         
return 2;
 
  185            case TangentSemantic:           
return 3;
 
  186            case BinormalSemantic:          
return 3;
 
  187            case JointSemantic:             
return 4;
 
  188            case WeightSemantic:            
return 4;
 
  189            case ColorSemantic:             
return 4;
 
  191            Q_UNREACHABLE_RETURN(0);
 
  201    static const int MAX_ATTRIBUTES = 16;
 
  202    static const int MAX_TARGET_ATTRIBUTES = 32;
 
  206        clearVertexAndIndex();
 
  211        m_vertexBuffer.clear();
 
  212        m_indexBuffer.clear();
 
  214        m_attributeCount = 0;
 
  215        m_primitiveType = Mesh::DrawMode::Triangles;
 
  219        m_targetBuffer.clear();
 
  220        m_targetAttributeCount = 0;
 
  229    int m_attributeCount = 0;
 
  231    int m_targetAttributeCount = 0;
 
  245            return fileId == FILE_ID && fileVersion == FILE_VERSION;
 
  248            return { FILE_ID, FILE_VERSION, {} };
 
  264        static const quint32 LEGACY_MESH_FILE_VERSION = 3;
 
  273            return { FILE_ID, FILE_VERSION, 0, 0 };
 
  278                    && fileVersion <= FILE_VERSION
 
  279                    && fileVersion >= LEGACY_MESH_FILE_VERSION;
 
  283            return fileVersion >= 5;
 
  287            return fileVersion >= 6;
 
  291            return fileVersion >= 7;
 
  303            return startOffset + byteCounter;
 
  307            advance(advanceAmount);
 
  308            quint32 alignmentAmount = 4 - (byteCounter % 4);
 
  309            byteCounter += alignmentAmount;
 
  310            return alignmentAmount;
 
  314            byteCounter += advanceAmount;
 
  336            subset.
lods.resize(lodCount);
 
  342    static void writeFileHeader(
QIODevice *
device, 
const MultiMeshInfo &meshFileInfo);
 
  372                                          const float* vertexPositions,
 
  374                                          size_t vertexPositionsStride,
 
  375                                          size_t targetIndexCount,
 
  377                                          unsigned int options,
 
  380float Q_QUICK3DUTILS_EXPORT 
simplifyScale(
const float* vertexPositions,
 
  382                                          size_t vertexPositionsStride);
 
IOBluetoothDevice * device
const char * constData() const noexcept
Returns a pointer to the const data stored in the byte array.
\inmodule QtCore \reentrant
static size_t getSizeOfType(QSSGRenderComponentType type)
Class representing 3D range or axis aligned bounding box.
VertexBuffer vertexBuffer() const
IndexBuffer indexBuffer() const
QVector< Subset > subsets() const
TargetBuffer targetBuffer() const
DrawMode drawMode() const
\macro QT_RESTRICTED_CAST_FROM_ASCII
static QString fromUtf16(const char16_t *, qsizetype size=-1)
The QVector3D class represents a vector or vertex in 3D space.
float simplifyScale(const float *vertexPositions, size_t vertexCount, size_t vertexPositionsStride)
void optimizeVertexCache(unsigned int *destination, const unsigned int *indices, size_t indexCount, size_t vertexCount)
size_t simplifyMesh(unsigned int *destination, const unsigned int *indices, size_t indexCount, const float *vertexPositions, size_t vertexCount, size_t vertexPositionsStride, size_t targetIndexCount, float targetError, unsigned int options, float *resultError)
Combined button and popup list for selecting options.
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char * destination
DBusConnection const char DBusError * error
static QString header(const QString &name)
static QByteArray fileId(HANDLE handle)
GLenum GLenum GLsizei count
const void GLsizei GLsizei stride
GLsizei GLsizei GLfloat distance
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLuint GLintptr offset
GLsizei GLenum const void * indices
unsigned long long quint64
QVector< Mesh::Lod > lods
void advance(int advanceAmount)
quint32 alignedAdvance(int advanceAmount)
MeshOffsetTracker(int offset)
static MultiMeshInfo withDefaults()
QMap< quint32, quint64 > meshEntries
Mesh::Subset toMeshSubset() const
Mesh::SubsetBounds bounds
static quint32 byteSizeForComponentType(Mesh::ComponentType componentType)
static const char * getLightmapUVAttrName()
static const char * getNormalAttrName()
static const char * getUV1AttrName()
static const char * getTexBinormalAttrName()
static const char * getPositionAttrName()
static const char * getTexTanAttrName()
static const char * getColorAttrName()
static const char * getJointAttrName()
static const char * getUV0AttrName()
static const char * getWeightAttrName()
QVector< VertexBufferEntry > entries
QSSGRenderVertexBufferEntry toRenderVertexBufferEntry() const
QVector< VertexBufferEntry > entries
int componentCount() const
QVector< Mesh::Subset > m_subsets
QByteArray m_targetBuffer
void clearVertexAndIndex()
QByteArray m_vertexBuffer