\hypertarget{group__Evas__3D__Mesh}{}\section{Mesh Object}
\label{group__Evas__3D__Mesh}\index{Mesh Object@{Mesh Object}}


A mesh object is a set of information on a visible geometrical object like character model, terrain or other structures and entities.  


\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef \hyperlink{group__Eo_ga9f3010a50b61a892d41f4ec2bda73f4c}{Eo} \hyperlink{group__Evas__3D__Mesh_gac18b53d5349db96ebfea8f676ff50fcf}{Evas\+\_\+3\+D\+\_\+\+Mesh}
\begin{DoxyCompactList}\small\item\em Mesh object handle. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
E\+O\+A\+P\+I void \hyperlink{group__Evas__3D__Mesh_ga2fd290b1f826f60d4bcb59a210574847}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+set} (int frame, \hyperlink{group__Evas__3D__Types_ga79dabfcdf0a7d509366db9116070d44a}{Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib} attrib, int stride, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Set the vertex data of the key frame of the given mesh. \end{DoxyCompactList}\item 
E\+O\+A\+P\+I void \hyperlink{group__Evas__3D__Mesh_ga51cc2d019ccbd644536a6991db9b7427}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set} (int frame, \hyperlink{group__Evas__3D__Types_ga79dabfcdf0a7d509366db9116070d44a}{Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib} attrib, int stride, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Set the vertex data of the key frame of the given mesh by copying from a buffer. \end{DoxyCompactList}\item 
E\+O\+A\+P\+I void $\ast$ \hyperlink{group__Evas__3D__Mesh_ga756e2ce032677cfb3167aa283d8dd7bd}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map} (int frame, \hyperlink{group__Evas__3D__Types_ga79dabfcdf0a7d509366db9116070d44a}{Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib} attrib)
\begin{DoxyCompactList}\small\item\em Map the vertex buffer of the key frame of the given mesh. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__3D__Mesh_ga66f7cb41d5792809fffd72c55d3d96b9}{evas\+\_\+3d\+\_\+mesh\+::frame\+\_\+vertex\+\_\+data\+\_\+set} (int frame\+\_\+, \hyperlink{group__Evas__3D__Types_ga79dabfcdf0a7d509366db9116070d44a}{Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib} attrib\+\_\+, int stride\+\_\+, const void $\ast$data\+\_\+) const 
\begin{DoxyCompactList}\small\item\em Set the vertex data of the key frame of the given mesh. \end{DoxyCompactList}\item 
void \hyperlink{group__Evas__3D__Mesh_gac01ab76c9f314108a0b00766ed46c7ef}{evas\+\_\+3d\+\_\+mesh\+::frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set} (int frame\+\_\+, \hyperlink{group__Evas__3D__Types_ga79dabfcdf0a7d509366db9116070d44a}{Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib} attrib\+\_\+, int stride\+\_\+, const void $\ast$data\+\_\+) const 
\begin{DoxyCompactList}\small\item\em Set the vertex data of the key frame of the given mesh by copying from a buffer. \end{DoxyCompactList}\item 
void $\ast$ \hyperlink{group__Evas__3D__Mesh_gaa058f01f40fc4bad4877f120f32720fa}{evas\+\_\+3d\+\_\+mesh\+::frame\+\_\+vertex\+\_\+data\+\_\+map} (int frame\+\_\+, \hyperlink{group__Evas__3D__Types_ga79dabfcdf0a7d509366db9116070d44a}{Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib} attrib\+\_\+) const 
\begin{DoxyCompactList}\small\item\em Map the vertex buffer of the key frame of the given mesh. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
A mesh object is a set of information on a visible geometrical object like character model, terrain or other structures and entities. 

Evas 3\+D support key-\/frame-\/based mesh animation, so a mesh can have multiple frames and each frame has its own material and geometric data. Like other data objects, a mesh can be located on a scene by being contained in a node. The mesh is transformed from its modeling coordinate space into the node\textquotesingle{}s coordinate space. Also, the frame number is saved in the containing node. So, one can locate multiple nodes having same mesh object with different animation frame and transform. Unlike camera and light object, multiple meshes can be contained in a single node. 

\subsection{Typedef Documentation}
\hypertarget{group__Evas__3D__Mesh_gac18b53d5349db96ebfea8f676ff50fcf}{}\index{Mesh Object@{Mesh Object}!Evas\+\_\+3\+D\+\_\+\+Mesh@{Evas\+\_\+3\+D\+\_\+\+Mesh}}
\index{Evas\+\_\+3\+D\+\_\+\+Mesh@{Evas\+\_\+3\+D\+\_\+\+Mesh}!Mesh Object@{Mesh Object}}
\subsubsection[{Evas\+\_\+3\+D\+\_\+\+Mesh}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Evas\+\_\+3\+D\+\_\+\+Mesh}}\label{group__Evas__3D__Mesh_gac18b53d5349db96ebfea8f676ff50fcf}


Mesh object handle. 

\begin{DoxySince}{Since}
1.\+10 
\end{DoxySince}


\subsection{Function Documentation}
\hypertarget{group__Evas__3D__Mesh_ga2fd290b1f826f60d4bcb59a210574847}{}\index{Mesh Object@{Mesh Object}!evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+set@{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+set}}
\index{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+set@{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+set}!Mesh Object@{Mesh Object}}
\subsubsection[{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}E\+O\+A\+P\+I void evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+set (
\begin{DoxyParamCaption}
\item[{int}]{frame, }
\item[{{\bf Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib}}]{attrib, }
\item[{int}]{stride, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}\label{group__Evas__3D__Mesh_ga2fd290b1f826f60d4bcb59a210574847}


Set the vertex data of the key frame of the given mesh. 

This function make evas read from the given buffer whenever it requires. If you want to release the buffer after calling this functions, use \hyperlink{group__Evas__3D__Mesh_ga51cc2d019ccbd644536a6991db9b7427}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set()} instead.

After setting the vertex data, further modifications should be protected by map/unmap pair.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Evas__3D__Mesh_ga51cc2d019ccbd644536a6991db9b7427}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set()} 

\hyperlink{group__Evas__3D__Mesh_ga756e2ce032677cfb3167aa283d8dd7bd}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map()} 

evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+unmap()
\end{DoxySeeAlso}

\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em frame} & The number of the key frame. \\
\hline
\mbox{\tt in}  & {\em attrib} & Vertex attribute I\+D. \\
\hline
\mbox{\tt in}  & {\em stride} & Stride to go to the next vertex (in bytes). \\
\hline
\mbox{\tt in}  & {\em data} & Pointer to the vertex data buffer. \\
\hline
\end{DoxyParams}
\hypertarget{group__Evas__3D__Mesh_ga51cc2d019ccbd644536a6991db9b7427}{}\index{Mesh Object@{Mesh Object}!evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set@{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set}}
\index{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set@{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set}!Mesh Object@{Mesh Object}}
\subsubsection[{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}E\+O\+A\+P\+I void evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set (
\begin{DoxyParamCaption}
\item[{int}]{frame, }
\item[{{\bf Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib}}]{attrib, }
\item[{int}]{stride, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}\label{group__Evas__3D__Mesh_ga51cc2d019ccbd644536a6991db9b7427}


Set the vertex data of the key frame of the given mesh by copying from a buffer. 

This function allocates internal vertex buffer and copy from the given buffer. So you can release the buffer. If you want to modify the vertex data use \hyperlink{group__Evas__3D__Mesh_ga756e2ce032677cfb3167aa283d8dd7bd}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map()}. After finishing the modifications, you should call evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+unmap().

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Evas__3D__Mesh_ga2fd290b1f826f60d4bcb59a210574847}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+set()} 

\hyperlink{group__Evas__3D__Mesh_ga756e2ce032677cfb3167aa283d8dd7bd}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map()} 

evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+unmap()
\end{DoxySeeAlso}

\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em frame} & The number of the key frame. \\
\hline
\mbox{\tt in}  & {\em attrib} & Vertex attribute I\+D. \\
\hline
\mbox{\tt in}  & {\em stride} & Stride to go to the next vertex (in bytes). \\
\hline
\mbox{\tt in}  & {\em data} & Pointer to the vertex data buffer. \\
\hline
\end{DoxyParams}
\hypertarget{group__Evas__3D__Mesh_ga756e2ce032677cfb3167aa283d8dd7bd}{}\index{Mesh Object@{Mesh Object}!evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map@{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map}}
\index{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map@{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map}!Mesh Object@{Mesh Object}}
\subsubsection[{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map}]{\setlength{\rightskip}{0pt plus 5cm}E\+O\+A\+P\+I void$\ast$ evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map (
\begin{DoxyParamCaption}
\item[{int}]{frame, }
\item[{{\bf Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib}}]{attrib}
\end{DoxyParamCaption}
)}\label{group__Evas__3D__Mesh_ga756e2ce032677cfb3167aa283d8dd7bd}


Map the vertex buffer of the key frame of the given mesh. 

After manipulating the mapped buffer, evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+unmap() should be called to properly download the data to the engine. If the data was set using \hyperlink{group__Evas__3D__Mesh_ga2fd290b1f826f60d4bcb59a210574847}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+set()}, pointer to the original buffer will be returned. Otherwise, the returned pointer can differ every time calling this function.

\begin{DoxySeeAlso}{See also}
evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+unmap() 
\end{DoxySeeAlso}
\begin{DoxyReturn}{Returns}
Starting address of the mapped vertex buffer.
\end{DoxyReturn}

\begin{DoxyParams}[1]{Parameters}
\mbox{\tt in}  & {\em frame} & The number of the key frame. \\
\hline
\mbox{\tt in}  & {\em attrib} & Vertex attribute I\+D. \\
\hline
\end{DoxyParams}
\hypertarget{group__Evas__3D__Mesh_ga66f7cb41d5792809fffd72c55d3d96b9}{}\index{Mesh Object@{Mesh Object}!frame\+\_\+vertex\+\_\+data\+\_\+set@{frame\+\_\+vertex\+\_\+data\+\_\+set}}
\index{frame\+\_\+vertex\+\_\+data\+\_\+set@{frame\+\_\+vertex\+\_\+data\+\_\+set}!Mesh Object@{Mesh Object}}
\subsubsection[{frame\+\_\+vertex\+\_\+data\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}void evas\+\_\+3d\+\_\+mesh\+::frame\+\_\+vertex\+\_\+data\+\_\+set (
\begin{DoxyParamCaption}
\item[{int}]{frame\+\_\+, }
\item[{{\bf Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib}}]{attrib\+\_\+, }
\item[{int}]{stride\+\_\+, }
\item[{const void $\ast$}]{data\+\_\+}
\end{DoxyParamCaption}
) const}\label{group__Evas__3D__Mesh_ga66f7cb41d5792809fffd72c55d3d96b9}


Set the vertex data of the key frame of the given mesh. 

This function make evas read from the given buffer whenever it requires. If you want to release the buffer after calling this functions, use \hyperlink{group__Evas__3D__Mesh_ga51cc2d019ccbd644536a6991db9b7427}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set()} instead.

After setting the vertex data, further modifications should be protected by map/unmap pair.

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Evas__3D__Mesh_ga51cc2d019ccbd644536a6991db9b7427}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set()} 

\hyperlink{group__Evas__3D__Mesh_ga756e2ce032677cfb3167aa283d8dd7bd}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map()} 

evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+unmap()
\end{DoxySeeAlso}

\begin{DoxyParams}{Parameters}
{\em frame} & The number of the key frame. \\
\hline
{\em attrib} & Vertex attribute I\+D. \\
\hline
{\em stride} & Stride to go to the next vertex (in bytes). \\
\hline
{\em data} & Pointer to the vertex data buffer. \\
\hline
\end{DoxyParams}
\hypertarget{group__Evas__3D__Mesh_gac01ab76c9f314108a0b00766ed46c7ef}{}\index{Mesh Object@{Mesh Object}!frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set@{frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set}}
\index{frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set@{frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set}!Mesh Object@{Mesh Object}}
\subsubsection[{frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}void evas\+\_\+3d\+\_\+mesh\+::frame\+\_\+vertex\+\_\+data\+\_\+copy\+\_\+set (
\begin{DoxyParamCaption}
\item[{int}]{frame\+\_\+, }
\item[{{\bf Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib}}]{attrib\+\_\+, }
\item[{int}]{stride\+\_\+, }
\item[{const void $\ast$}]{data\+\_\+}
\end{DoxyParamCaption}
) const}\label{group__Evas__3D__Mesh_gac01ab76c9f314108a0b00766ed46c7ef}


Set the vertex data of the key frame of the given mesh by copying from a buffer. 

This function allocates internal vertex buffer and copy from the given buffer. So you can release the buffer. If you want to modify the vertex data use \hyperlink{group__Evas__3D__Mesh_ga756e2ce032677cfb3167aa283d8dd7bd}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map()}. After finishing the modifications, you should call evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+unmap().

\begin{DoxySeeAlso}{See also}
\hyperlink{group__Evas__3D__Mesh_ga2fd290b1f826f60d4bcb59a210574847}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+set()} 

\hyperlink{group__Evas__3D__Mesh_ga756e2ce032677cfb3167aa283d8dd7bd}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+map()} 

evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+unmap()
\end{DoxySeeAlso}

\begin{DoxyParams}{Parameters}
{\em frame} & The number of the key frame. \\
\hline
{\em attrib} & Vertex attribute I\+D. \\
\hline
{\em stride} & Stride to go to the next vertex (in bytes). \\
\hline
{\em data} & Pointer to the vertex data buffer. \\
\hline
\end{DoxyParams}
\hypertarget{group__Evas__3D__Mesh_gaa058f01f40fc4bad4877f120f32720fa}{}\index{Mesh Object@{Mesh Object}!frame\+\_\+vertex\+\_\+data\+\_\+map@{frame\+\_\+vertex\+\_\+data\+\_\+map}}
\index{frame\+\_\+vertex\+\_\+data\+\_\+map@{frame\+\_\+vertex\+\_\+data\+\_\+map}!Mesh Object@{Mesh Object}}
\subsubsection[{frame\+\_\+vertex\+\_\+data\+\_\+map}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ evas\+\_\+3d\+\_\+mesh\+::frame\+\_\+vertex\+\_\+data\+\_\+map (
\begin{DoxyParamCaption}
\item[{int}]{frame\+\_\+, }
\item[{{\bf Evas\+\_\+3\+D\+\_\+\+Vertex\+\_\+\+Attrib}}]{attrib\+\_\+}
\end{DoxyParamCaption}
) const}\label{group__Evas__3D__Mesh_gaa058f01f40fc4bad4877f120f32720fa}


Map the vertex buffer of the key frame of the given mesh. 

After manipulating the mapped buffer, evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+unmap() should be called to properly download the data to the engine. If the data was set using \hyperlink{group__Evas__3D__Mesh_ga2fd290b1f826f60d4bcb59a210574847}{evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+set()}, pointer to the original buffer will be returned. Otherwise, the returned pointer can differ every time calling this function.

\begin{DoxySeeAlso}{See also}
evas\+\_\+3d\+\_\+mesh\+\_\+frame\+\_\+vertex\+\_\+data\+\_\+unmap() 
\end{DoxySeeAlso}
\begin{DoxyReturn}{Returns}
Starting address of the mapped vertex buffer.
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em frame} & The number of the key frame. \\
\hline
{\em attrib} & Vertex attribute I\+D. \\
\hline
\end{DoxyParams}
