SLProject
4.2.000
A platform independent 3D computer graphics framework for desktop OS, Android, iOS and online in web browsers
|
Texture Font class inherits SLGLTexture for alpha blended font rendering. More...
#include <SLTexFont.h>
Classes | |
struct | SLTexFontChar |
Single Character info struct w. min. and max. texcoords. More... | |
Public Member Functions | |
SLTexFont (SLstring fontFilename, SLGLProgram *fontTexProgram) | |
SLTexFont (SLstring fontFilename, SLstring shaderDir) | |
~SLTexFont () | |
void | create (SLstring fontFilename) |
SLVec2f | calcTextSize (const SLstring &text, SLfloat maxWidth=0.0f, SLfloat lineHeightFactor=1.5f) |
SLVstring | wrapTextToLines (SLstring text, SLfloat maxW) |
void | buildTextBuffers (SLGLVertexArray &vao, const SLstring &text, SLfloat maxWidth=0.0f, SLfloat lineHeight=1.5f) |
SLGLProgram * | fontTexProgram () |
Public Member Functions inherited from SLGLTexture | |
SLGLTexture () | |
Default ctor for all stack instances (not created with new) More... | |
SLGLTexture (SLAssetManager *assetMgr, const SLVCol4f &colors, SLint min_filter=GL_LINEAR, SLint mag_filter=GL_LINEAR, SLint wrapS=GL_REPEAT, const SLstring &name="2D-Texture") | |
ctor for 1D texture with internal image allocation More... | |
SLGLTexture (SLAssetManager *assetMgr, SLint min_filter, SLint mag_filter, SLint wrapS, SLint wrapT, SLenum target=GL_TEXTURE_2D) | |
ctor for empty 2D textures More... | |
SLGLTexture (SLAssetManager *assetMgr, unsigned char *data, int width, int height, int cvtype, SLint min_filter, SLint mag_filter, SLTextureType type, SLint wrapS, SLint wrapT) | |
ctor for 2D textures from byte pointer More... | |
SLGLTexture (SLAssetManager *assetMgr, const SLstring &imageFilename, SLint min_filter=GL_LINEAR_MIPMAP_LINEAR, SLint mag_filter=GL_LINEAR, SLTextureType type=TT_unknown, SLint wrapS=GL_REPEAT, SLint wrapT=GL_REPEAT) | |
ctor for 2D textures with internal image allocation More... | |
SLGLTexture (SLAssetManager *assetMgr, const SLVstring &imageFilenames, SLint min_filter=GL_LINEAR, SLint mag_filter=GL_LINEAR, SLint wrapS=GL_REPEAT, SLint wrapT=GL_REPEAT, const SLstring &name="3D-Texture", SLbool loadGrayscaleIntoAlpha=false) | |
ctor for 3D texture with internal image allocation More... | |
SLGLTexture (SLAssetManager *assetMgr, SLint depth, const SLstring &imageFilename, SLint min_filter=GL_LINEAR, SLint mag_filter=GL_LINEAR, SLint wrapS=GL_REPEAT, SLint wrapT=GL_REPEAT, const SLstring &name="3D-Texture", SLbool loadGrayscaleIntoAlpha=false) | |
ctor for 3D texture from a single file with depth as 3rd dimension More... | |
SLGLTexture (SLAssetManager *assetMgr, const SLstring &imageFilenameXPos, const SLstring &imageFilenameXNeg, const SLstring &imageFilenameYPos, const SLstring &imageFilenameYNeg, const SLstring &imageFilenameZPos, const SLstring &imageFilenameZNeg, SLint min_filter=GL_LINEAR, SLint mag_filter=GL_LINEAR, SLTextureType type=TT_unknown) | |
ctor for cube mapping with internal image allocation More... | |
~SLGLTexture () override | |
virtual void | build (SLint texUnit) |
void | deleteData (SLbool deleteAlsoOnGPU) |
Delete all data (CVImages and GPU textures) More... | |
void | deleteDataGpu () |
Deletes the OpenGL texture objects and releases the memory on the GPU. More... | |
void | deleteImages () |
Deletes the CVImages in _images. No more texture mapping in ray tracing. More... | |
void | bindActive (SLuint texUnit=0) |
void | fullUpdate () |
void | drawSprite (SLbool doUpdate, SLfloat x, SLfloat y, SLfloat w, SLfloat h) |
Draws the texture as 2D sprite with OpenGL buffers. More... | |
void | cubeUV2XYZ (SLint index, SLfloat u, SLfloat v, SLfloat &x, SLfloat &y, SLfloat &z) |
Computes the unnormalised vector x,y,z from tex. coords. uv with cubemap index. More... | |
void | cubeXYZ2UV (SLfloat x, SLfloat y, SLfloat z, SLint &index, SLfloat &u, SLfloat &v) |
Computes the uv and cubemap image index from a unnormalised vector x,y,z. More... | |
SLstring | filterString (SLint glFilter) |
Returns OpenGL texture filter as string. More... | |
void | texType (SLTextureType bt) |
void | uvIndex (SLbyte i) |
void | bumpScale (SLfloat bs) |
void | minFiler (SLint minF) |
void | magFiler (SLint magF) |
void | needsUpdate (SLbool update) |
void | textureSize (int width, int height) |
void | deleteImageAfterBuild (SLbool delImg) |
If deleteImageAfterBuild is set to true you won't be able to ray trace the scene. More... | |
SLuint | width () |
SLuint | height () |
SLuint | depth () |
SLbyte | uvIndex () |
SLint | bytesPerPixel () |
SLint | bytesOnGPU () |
SLint | bytesInFile () |
CVVImage & | images () |
SLenum | target () const |
SLuint | texID () const |
SLTextureType | texType () |
SLfloat | bumpScale () const |
SLCol4f | getTexelf (SLfloat u, SLfloat v, SLuint imgIndex=0) |
SLGLTexture::getTexelf returns a pixel color from u & v texture coordinates. More... | |
SLCol4f | getTexelf (const SLVec3f &cubemapDir) |
SLGLTexture::getTexelf returns a pixel color at the specified cubemap direction. More... | |
SLbool | hasAlpha () |
SLMat4f | tm () |
SLbool | autoCalcTM3D () const |
SLbool | needsUpdate () |
SLstring | typeName () |
Returns the texture type as string. More... | |
SLstring | typeShortName () |
Returns the texture type short. More... | |
bool | isTexture () |
SLstring | minificationFilterName () |
SLstring | magnificationFilterName () |
void | build2DMipmaps (SLint target, SLuint index) |
SLbool | copyVideoImage (SLint camWidth, SLint camHeight, CVPixelFormatGL glFormat, SLuchar *data, SLbool isContinuous, SLbool isTopLeft) |
Copies the image data from a video camera into the current video image. More... | |
SLbool | copyVideoImage (SLint camWidth, SLint camHeight, CVPixelFormatGL srcFormat, CVPixelFormatGL dstFormat, SLuchar *data, SLbool isContinuous, SLbool isTopLeft) |
void | calc3DGradients (SLint sampleRadius, const function< void(int)> &onUpdateProgress=nullptr) |
void | smooth3DGradients (SLint smoothRadius, function< void(int)> onUpdateProgress=nullptr) |
SLVec2f | dudv (SLfloat u, SLfloat v) |
Public Member Functions inherited from SLObject | |
SLObject (const SLstring &Name="", const SLstring &url="") | |
virtual | ~SLObject () |
void | name (const SLstring &Name) |
void | url (const SLstring &url) |
const SLstring & | name () const |
const SLstring & | url () const |
Public Attributes | |
SLTexFontChar | chars [256] |
SLint | charsHeight |
SLGLProgram * | _fontTexProgram = nullptr |
bool | _deleteProgram = false |
Additional Inherited Members | |
Static Public Member Functions inherited from SLGLTexture | |
static SLTextureType | detectType (const SLstring &filename) |
Detects the texture type from the filename appendix (See SLTexType def.) More... | |
static string | internalFormatStr (int internalFormat) |
Returns the internal pixel format from OpenGL. More... | |
Static Public Attributes inherited from SLGLTexture | |
static SLfloat | maxAnisotropy = -1.0f |
Returns the derivation as [s,t]. More... | |
static SLuint | totalNumBytesOnGPU = 0 |
Total NO. of bytes used for textures on GPU. More... | |
Protected Member Functions inherited from SLGLTexture | |
void | load (const SLstring &filename, SLbool flipVertical=true, SLbool loadGrayscaleIntoAlpha=false) |
Loads the texture, converts color depth & applies vertical mirroring. More... | |
void | load (const SLVCol4f &colors) |
Loads the 1D color data into an image of height 1. More... | |
Protected Attributes inherited from SLGLTexture | |
CVVImage | _images |
Vector of CVImage pointers. More... | |
SLuint | _texID |
OpenGL texture ID. More... | |
SLTextureType | _texType |
See SLTextureType. More... | |
SLint | _width |
Texture image width in pixels (images exist either in _images or on the GPU or on both) More... | |
SLint | _height |
Texture image height in pixels (images exist either in _images or on the GPU or on both) More... | |
SLint | _depth |
3D Texture image depth (images exist either in _images or on the GPU or on both) More... | |
SLbyte | _uvIndex |
Texture coordinate index in SLMesh (0 = default) More... | |
SLint | _internalFormat |
Internal OpenGL format. More... | |
SLint | _bytesPerPixel |
Bytes per texture image pixel (images exist either in _images or on the GPU or on both) More... | |
SLint | _min_filter |
Minification filter. More... | |
SLint | _mag_filter |
Magnification filter. More... | |
SLint | _wrap_s |
Wrapping in s direction. More... | |
SLint | _wrap_t |
Wrapping in t direction. More... | |
SLenum | _target |
texture target More... | |
SLMat4f | _tm |
texture matrix More... | |
SLuint | _bytesOnGPU |
NO. of bytes on GPU. More... | |
SLuint | _bytesInFile |
NO. of bytes in file. More... | |
SLbool | _autoCalcTM3D |
Flag if texture matrix should be calculated from AABB for 3D mapping. More... | |
SLfloat | _bumpScale |
Bump mapping scale factor. More... | |
SLbool | _resizeToPow2 |
Flag if image should be resized to n^2. More... | |
SLGLVertexArray | _vaoSprite |
Vertex array object for sprite rendering. More... | |
std::atomic< bool > | _needsUpdate {} |
Flag if image needs an single update. More... | |
std::mutex | _mutex |
Mutex to protect parallel access (used in ray tracing) More... | |
SLbool | _deleteImageAfterBuild |
Flag if images should be deleted after build on GPU. More... | |
SLbool | _compressedTexture = false |
True for compressed texture format on GPU. More... | |
Protected Attributes inherited from SLObject | |
SLstring | _name |
name of an object More... | |
SLstring | _url |
uniform resource locator More... | |
Texture Font class inherits SLGLTexture for alpha blended font rendering.
This texture font class was originally inspired by the the font class of the AntTweakBar library (http://www.antisphere.com/Wiki/tools:anttweakbar) The source bitmap includes 224 characters starting from ascii char 32 (space) to ascii char 255:
!"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_ `abcdefghijklmnopqrstuvwxyz{|}~ ��������������������������������������������������������������� �������������������������������� ��������������������������������
First column of a source bitmap is a delimiter with color=zero at the end of each line of characters. Last row of a line of characters is a delimiter with color=zero at the last pixel of each character. The source bitmaps for the fonts are in the folder _data/fonts. The where used for design only. Their data is directly included a binary array in the source file SLTexFont.cpp.
Definition at line 39 of file SLTexFont.h.
SLTexFont::SLTexFont | ( | SLstring | fontFilename, |
SLGLProgram * | fontTexProgram | ||
) |
Definition at line 19 of file SLTexFont.cpp.
Definition at line 45 of file SLTexFont.cpp.
SLTexFont::~SLTexFont | ( | ) |
Definition at line 70 of file SLTexFont.cpp.
void SLTexFont::buildTextBuffers | ( | SLGLVertexArray & | vao, |
const SLstring & | text, | ||
SLfloat | maxWidth = 0.0f , |
||
SLfloat | lineHeight = 1.5f |
||
) |
Builds the vertex array object with 2 texture mapped triangles per character. The text width < maxWidth the text will be on one line. If it is wider it will be split into multiple lines with a height = font height * lineHeight.
vao | external vertex array object |
text | text to render |
maxWidth | max. width for multi-line text |
lineHeight | line height factor |
Definition at line 345 of file SLTexFont.cpp.
SLVec2f SLTexFont::calcTextSize | ( | const SLstring & | text, |
SLfloat | maxWidth = 0.0f , |
||
SLfloat | lineHeightFactor = 1.5f |
||
) |
Returns the size (width & height) of the full text in float pixels. If a max. width is passed the text is first wrapped into multiple lines. For multiline text the line height is calculate as the font height * lineHeightFactor.
Definition at line 243 of file SLTexFont.cpp.
SLTexFont::create creates the inherited texture map with the passed image file. The bitmap image is parsed for all 224 character positions to create the according texture coordinate.
Definition at line 83 of file SLTexFont.cpp.
|
inline |
Definition at line 56 of file SLTexFont.h.
Returns a vector of strings of the text to be wrapped to a max. with of maxW. The sum of all characters in lines must be equal to the length of the input text
Definition at line 277 of file SLTexFont.cpp.
bool SLTexFont::_deleteProgram = false |
Definition at line 72 of file SLTexFont.h.
SLGLProgram* SLTexFont::_fontTexProgram = nullptr |
Definition at line 71 of file SLTexFont.h.
SLTexFontChar SLTexFont::chars[256] |
Definition at line 68 of file SLTexFont.h.
SLint SLTexFont::charsHeight |
Definition at line 69 of file SLTexFont.h.