![]() |
Duckcpp 2.1.0
Duckcpp is a high-performance c++ graphics engine.
|
Helper class for creating geometry on the fly. More...
#include <duckcpp/core/engine/IGeometryCreator.hpp>


Public Member Functions | |
| virtual IMesh * | createCubeMesh (const dcpp::nub::vector3df &size=dcpp::nub::vector3df(5.f, 5.f, 5.f), ECUBE_MESH_TYPE type=ECMT_1BUF_12VTX_NA) const =0 |
| Creates a simple cube mesh. | |
| virtual IMesh * | createHillPlaneMesh (const dcpp::nub::dimension2df &tileSize, const dcpp::nub::dimension2du &tileCount, dcpp::video::SMaterial *material, dcpp::float32_kt hillHeight, const dcpp::nub::dimension2df &countHills, const dcpp::nub::dimension2df &textureRepeatCount) const =0 |
| Create a pseudo-random mesh representing a hilly terrain. | |
| IMesh * | createPlaneMesh (const dcpp::nub::dimension2df &tileSize, const dcpp::nub::dimension2du &tileCount=dcpp::nub::dimension2du(1, 1), dcpp::video::SMaterial *material=0, const dcpp::nub::dimension2df &textureRepeatCount=dcpp::nub::dimension2df(1.f, 1.f)) const |
| Create a simple rectangular textured plane mesh. | |
| virtual IMesh * | createGeoplaneMesh (dcpp::float32_kt radius=5.f, dcpp::uint32_kt rows=16, dcpp::uint32_kt columns=16) const =0 |
| Create a geoplane. | |
| virtual IMesh * | createTerrainMesh (dcpp::video::IImage *texture, dcpp::video::IImage *heightmap, const dcpp::nub::dimension2df &stretchSize, dcpp::float32_kt maxHeight, dcpp::video::IVideoDriver *driver, const dcpp::nub::dimension2du &defaultVertexBlockSize, bool debugBorders=false) const =0 |
| Create a terrain mesh from an image representing a heightfield. | |
| virtual IMesh * | createArrowMesh (const dcpp::uint32_kt tesselationCylinder=4, const dcpp::uint32_kt tesselationCone=8, const dcpp::float32_kt height=1.f, const dcpp::float32_kt cylinderHeight=0.6f, const dcpp::float32_kt widthCylinder=0.05f, const dcpp::float32_kt widthCone=0.3f, const dcpp::video::SColor colorCylinder=0xFFFFFFFF, const dcpp::video::SColor colorCone=0xFFFFFFFF) const =0 |
| Create an arrow mesh, composed of a cylinder and a cone. | |
| virtual IMesh * | createSphereMesh (dcpp::float32_kt radius=5.f, dcpp::uint32_kt polyCountX=16, dcpp::uint32_kt polyCountY=16) const =0 |
| Create a sphere mesh. | |
| virtual IMesh * | createCylinderMesh (dcpp::float32_kt radius, dcpp::float32_kt length, dcpp::uint32_kt tesselation, const dcpp::video::SColor &color=dcpp::video::SColor(0xffffffff), bool closeTop=true, dcpp::float32_kt oblique=0.f, dcpp::uint32_kt normalType=0) const =0 |
| Create a cylinder mesh. | |
| virtual IMesh * | createConeMesh (dcpp::float32_kt radius, dcpp::float32_kt length, dcpp::uint32_kt tesselation, const dcpp::video::SColor &colorTop=dcpp::video::SColor(0xffffffff), const dcpp::video::SColor &colorBottom=dcpp::video::SColor(0xffffffff), dcpp::float32_kt oblique=0.f) const =0 |
| Create a cone mesh. | |
| virtual IMesh * | createTorusMesh (dcpp::float32_kt majorRadius, dcpp::float32_kt minorRadius, dcpp::uint32_kt majorSegments=32, dcpp::uint32_kt minorSegments=16, dcpp::float32_kt angleStart=0.f, dcpp::float32_kt angleEnd=360.f, int capEnds=0) const =0 |
| Create a torus mesh. | |
| virtual IMesh * | createVolumeLightMesh (const dcpp::uint32_kt subdivideU=32, const dcpp::uint32_kt subdivideV=32, const dcpp::video::SColor footColor=0xffffffff, const dcpp::video::SColor tailColor=0xffffffff, const dcpp::float32_kt lpDistance=8.f, const dcpp::nub::vector3df &lightDim=dcpp::nub::vector3df(1.f, 1.2f, 1.f)) const =0 |
| Create a volume light mesh. | |
Public Member Functions inherited from dcpp::IReferenceCounted | |
| IReferenceCounted () | |
| Constructor. | |
| virtual | ~IReferenceCounted () |
| Destructor. | |
| void | grab () const |
| Grabs the object. Increments the reference counter by one. | |
| bool | drop () const |
| Drops the object. Decrements the reference counter by one. | |
| dcpp::int32_kt | getReferenceCount () const |
| Get the reference count. | |
| const dcpp::char_kt * | getDebugName () const |
| Returns the debug name of the object. | |
Additional Inherited Members | |
Protected Member Functions inherited from dcpp::IReferenceCounted | |
| void | setDebugName (const dcpp::char_kt *newName) |
| Sets the debug name of the object. | |
Helper class for creating geometry on the fly.
You can get an instance of this class through ISceneManager::getGeometryCreator()
|
pure virtual |
Create an arrow mesh, composed of a cylinder and a cone.
| tesselationCylinder | Number of quads composing the cylinder. |
| tesselationCone | Number of triangles composing the cone's roof. |
| height | Total height of the arrow |
| cylinderHeight | Total height of the cylinder, should be lesser than total height |
| widthCylinder | Diameter of the cylinder |
| widthCone | Diameter of the cone's base, should be not smaller than the cylinder's diameter |
| colorCylinder | color of the cylinder |
| colorCone | color of the cone |
|
pure virtual |
Create a cone mesh.
| radius | Radius of the cone. |
| length | Length of the cone. |
| tesselation | Number of quads around the circumference of the cone. |
| colorTop | The color of the top of the cone. |
| colorBottom | The color of the bottom of the cone. |
| oblique | (to be documented) |
|
pure virtual |
Creates a simple cube mesh.
| size | Dimensions of the cube. |
| type | One of ECUBE_MESH_TYPE. So you can chose between cubes with single material or independent materials per side. |
|
pure virtual |
Create a cylinder mesh.
| radius | Radius of the cylinder. |
| length | Length of the cylinder. |
| tesselation | Number of quads around the circumference of the cylinder. |
| color | The color of the cylinder. |
| closeTop | If true, close the ends of the cylinder, otherwise leave them open. |
| oblique | X-offset (shear) of top compared to bottom. |
| normalType | When 0 side normals are radial from origin. Note that origin is at the bottom. When 1 side normals are flat along top/bottom polygons. NOTE: To get normals which are perpendicular to the side of an oblique cylinder, don't use the oblique parameter. Instead set normalType to 1 and create a cylinder with oblique set to 0. Then use IMeshManipulator::transform with a shear matrix on the returned mesh. You get a shear matrix for an identical effect of this oblique parameter when you set the 4th element of an identity matrix to (oblique/length). |
|
pure virtual |
Create a geoplane.
| radius | Radius of the plane |
| rows | How many rows to place |
| columns | How many columns to place |
|
pure virtual |
Create a pseudo-random mesh representing a hilly terrain.
| tileSize | The size of each tile. |
| tileCount | The number of tiles in each dimension. |
| material | The material to apply to the mesh. |
| hillHeight | The maximum height of the hills. |
| countHills | The number of hills along each dimension. |
| textureRepeatCount | The number of times to repeat the material texture along each dimension. |
|
inline |
Create a simple rectangular textured plane mesh.
| tileSize | The size of each tile. |
| tileCount | The number of tiles in each dimension. |
| material | The material to apply to the mesh. |
| textureRepeatCount | The number of times to repeat the material texture along each dimension. |
|
pure virtual |
Create a sphere mesh.
| radius | Radius of the sphere |
| polyCountX | Number of quads used for the horizontal tiling |
| polyCountY | Number of quads used for the vertical tiling |
|
pure virtual |
Create a terrain mesh from an image representing a heightfield.
| texture | The texture to apply to the terrain. |
| heightmap | An image that will be interpreted as a heightmap. The brightness (average color) of each pixel is interpreted as a height, with a 255 brightness pixel producing the maximum height. |
| stretchSize | The size that each pixel will produce, i.e. a 512x512 heightmap and a stretchSize of (10.f, 20.f) will produce a mesh of size 5120.f x 10240.f |
| maxHeight | The maximum height of the terrain. |
| driver | The current video driver. |
| defaultVertexBlockSize | (to be documented) |
| debugBorders | (to be documented) |
|
pure virtual |
Create a torus mesh.
Note: Segments might get reduced to ensure it fits into 16-bit meshbuffer. With 255 segments for minor and major circle you'll hit the maximum. When using caps 2 more vertices are added. Note: UV's for caps are probably not useful
| majorRadius | Starting from mesh center |
| minorRadius | Starting from a circle at majorRadius distance around center |
| majorSegments | Segments for major circle. Will use at least 3 segments. |
| minorSegments | Segments for minor circle. Will use at least 3 segments. |
| angleStart | Start major circle between 0 and 360° and < angleEnd |
| angleEnd | End major circle between 0 and 360° and > angleStart |
| capEnds | When you don't create a full major circle you might want caps 0 = no caps (default) Bit 1: add cap at angleStart Bit 2: add cap at angleEnd |
|
pure virtual |
Create a volume light mesh.
| subdivideU | Horizontal patch count. |
| subdivideV | Vertical patch count. |
| footColor | Color at the bottom of the light. |
| tailColor | Color at the mid of the light. |
| lpDistance | Virtual distance of the light point for normals. |
| lightDim | Dimensions of the light. |