Difference between revisions of "Horde3D Wiki:HOWTO"
m |
|||
Line 26: | Line 26: | ||
== How to modify vertex data == | == How to modify vertex data == | ||
− | Vertex data is stored as streams in geometry resources. A pointer to the vertex data can be obtained by mapping a stream. The following code modifies the y | + | Vertex data is stored as streams in geometry resources. A pointer to the vertex data can be obtained by mapping a stream. The following code modifies the y coordinates of all vertex positions stored in the specified geometry resource. |
{{CppSourceCode| | {{CppSourceCode| |
Revision as of 20:00, 27 August 2009
The HOWTO contains quick answers for smaller problems.
Contents
How to enable anti-aliasing (MSAA)
Anti-aliasing can only be enabled for render targets. The RenderTarget element used in Pipeline resources has an attribute maxSamples which defines the maximum number of samples used for MSAA. The actual number of samples is controlled by the engine option SampleCount. This makes it possible to control the anti-aliasing quality from the application. If SampleCount is set to zero, MSAA is disabled. Note that the hardware needs to support the EXT_framebuffer_multisample extension in order for the MSAA to work.
How to get the size of a loaded texture
The following code queries the dimensions of the base mipmap of a loaded texture:
C++ Code |
int width = h3dGetResParamI( texResHandle, H3DTexRes::ImageElem, 0, H3DTexRes::ImgWidthI );
int height = h3dGetResParamI( texResHandle, H3DTexRes::ImageElem, 0, H3DTexRes::ImgHeightI ); |
If you want to get the dimensions of mipmap level n, change the elemIdx parameter which is 0 above to n.
How to modify vertex data
Vertex data is stored as streams in geometry resources. A pointer to the vertex data can be obtained by mapping a stream. The following code modifies the y coordinates of all vertex positions stored in the specified geometry resource.
C++ Code |
int vertCount = h3dGetResParamI( myGeoRes, H3DGeoRes::GeometryElem, 0, H3DGeoRes::GeoVertexCountI );
float *pVertPosData = (float *)h3dMapResStream( myGeoRes, H3DGeoRes::GeometryElem, 0, H3DGeoRes::GeoVertPosStream, true, true );
for( int i = 0; i < vertCount; ++i )
{
pVertPosData[i * 3 + 1] = pVertPosData[i * 3 + 1] * 2;
}
h3dUnmapResStream( myGeoRes ); |