本文整理汇总了C++中TexturePtr::getHeight方法的典型用法代码示例。如果您正苦于以下问题:C++ TexturePtr::getHeight方法的具体用法?C++ TexturePtr::getHeight怎么用?C++ TexturePtr::getHeight使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TexturePtr
的用法示例。
在下文中一共展示了TexturePtr::getHeight方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
TextureRegion::TextureRegion(TexturePtr texture, unsigned int leftX, unsigned int topY, unsigned int width, unsigned int height)
:_leftX(leftX),
_topY(topY),
_width(width),
_height(height),
_isRotated(false),
_texRef(nullptr)
{
_texRef = texture;
int tWidth = texture->getWidth();
int tHeight = texture->getHeight();
this->_u1 = (float)leftX / tWidth;
this->_u2 = (float)(leftX + _width) / tWidth;
this->_v1 = (float)topY / tHeight;
this->_v2 = (float)(topY + _height) / tHeight;
}
示例2: createMaterial
//! Implementation of VolumeRenderableMaterialFactory
MaterialPtr createMaterial(const SparseVolumeMaterialConfig& config) const
{
TexturePtr densityTexture = getGridForRole(config.leafAtlases, GridTextureRole_Diffuse);
assert(densityTexture);
TexturePtr normalTexture = getGridForRole(config.leafAtlases, GridTextureRole_Normal);
TexturePtr temperatureTexture = getGridForRole(config.leafAtlases, GridTextureRole_Temperature);
MaterialPtr material(new Material);
glm::vec3 densityTextureSize(densityTexture->getWidth(), densityTexture->getHeight(), densityTexture->getDepth());
// Main technique
{
TechniquePtr technique(new Technique(m_volumeShader));
{
Vec3ShaderParameterPtr boxModelSizeParameter(new Vec3ShaderParameter("volumeSize_modelSpace", config.boxSize));
technique->addCustomShaderParameter(boxModelSizeParameter);
Vec3ShaderParameterPtr oneOnVolumeTextureSizeParameter(new Vec3ShaderParameter("oneOnVolumeTextureSize", 1.0f / densityTextureSize));
technique->addCustomShaderParameter(oneOnVolumeTextureSizeParameter);
technique->setAlphaBlendingMode(AlphaBlendingMode_PreMultiplied);
int maxLeafCountPerInternalNode = config.maxLeafCountPerInternalNodeDimension * config.maxLeafCountPerInternalNodeDimension * config.maxLeafCountPerInternalNodeDimension;
technique->addCustomShaderParameter(ShaderParameterPtr(new IntShaderParameter("firstInternalNodeIndex", config.firstInternalNodeIndex)));
technique->addCustomShaderParameter(ShaderParameterPtr(new IntShaderParameter("maxLeafCountPerInternalNode", maxLeafCountPerInternalNode)));
technique->addCustomShaderParameter(ShaderParameterPtr(new IVec3ShaderParameter("maxLeafCountPerAtlasDimension", config.maxLeafCountPerAtlasDimension)));
technique->addCustomShaderParameter(ShaderParameterPtr(new IntShaderParameter("maxLeafCountPerInternalNodeDimension", config.maxLeafCountPerInternalNodeDimension)));
float thresholdAlpha = m_transparent ? 0.001 : 0.2;
technique->addCustomShaderParameter(ShaderParameterPtr(new FloatShaderParameter("thresholdAlpha", thresholdAlpha)));
float opacityMultiplier = m_transparent ? m_opacityMultiplier : 200.0;
technique->addCustomShaderParameter(ShaderParameterPtr(new FloatShaderParameter("opacityMultiplier", opacityMultiplier)));
{
TextureUnit unit(densityTexture, "albedoSampler");
technique->addTextureUnit(unit);
}
if (normalTexture)
{
TextureUnit unit(normalTexture, "normalSampler");
technique->addTextureUnit(unit);
}
if (temperatureTexture)
{
TextureUnit unit(temperatureTexture, "temperatureSampler");
technique->addTextureUnit(unit);
}
TextureUnit unit(m_temperatureRampTexture, "temperatureRampSampler");
technique->addTextureUnit(unit);
{
TextureUnit unit(config.nodeIndirectionTexture, "nodeIndirectionSampler");
technique->addTextureUnit(unit);
}
}
material->setTechnique(technique);
}
return material;
}
示例3: updateControls
void TextureToolWindow::updateControls(String texName)
{
try
{
bool exists = TextureManager::getSingleton().resourceExists(texName);
if (!exists)
{
mTxt->setCaption(convertToMyGUIString("Texture not found:\n" + texName));
mBtnSavePNG->setEnabled(false);
return;
}
TexturePtr tex = TextureManager::getSingleton().getByName(texName);
if (tex.isNull())
{
mTxt->setCaption(convertToMyGUIString("Error loading texture:\n" + texName));
mBtnSavePNG->setEnabled(false);
return;
}
String str = "#aa0000" + texName + "#000000\n";
str += "#00aa00res: #000000" + TOSTRING(tex->getWidth()) + " x " + TOSTRING(tex->getHeight()) + " pixels\n";
str += "#00aa00size: #000000" + formatBytes(tex->getSize()) + "\n";
str += "#00aa00format: #000000" + PixelUtil::getFormatName(tex->getFormat()) + "\n";
if (tex->getNumFaces() > 1)
str += "#00aa00faces: #000000" + TOSTRING(tex->getNumFaces()) + "\n";
if (tex->getFSAA() > 0)
str += "#00aa00FSAA: #000000" + TOSTRING(tex->getFSAA()) + "\n";
if (tex->getNumMipmaps() > 0)
str += "#00aa00mipmaps: #000000" + TOSTRING(tex->getNumMipmaps()) + "\n";
String typeStr = "";
switch (tex->getTextureType())
{
case TEX_TYPE_1D: typeStr = "1D";
break;
case TEX_TYPE_2D: typeStr = "2D";
break;
case TEX_TYPE_3D: typeStr = "3D";
break;
case TEX_TYPE_CUBE_MAP: typeStr = "Cube Map";
break;
}
str += "#00aa00type: #000000" + typeStr + "\n";
String usageStr = "";
if (tex->getUsage() & TU_STATIC)
usageStr += "static,\n";
if (tex->getUsage() & TU_DYNAMIC)
usageStr += "dynamic,\n";
if (tex->getUsage() & TU_WRITE_ONLY)
usageStr += "write only,\n";
if (tex->getUsage() & TU_STATIC_WRITE_ONLY)
usageStr += "static write only,\n";
if (tex->getUsage() & TU_DYNAMIC_WRITE_ONLY)
usageStr += "dynamic write only,\n";
if (tex->getUsage() & TU_DYNAMIC_WRITE_ONLY_DISCARDABLE)
usageStr += "dynamic write only discardable,\n";
if (tex->getUsage() & TU_AUTOMIPMAP)
usageStr += "automipmap,\n";
if (tex->getUsage() & TU_RENDERTARGET)
usageStr += "rendertarget,\n";
if (tex->getUsage() & TU_DEFAULT)
usageStr += "default\n";
str += "#00aa00usage: #000000" + usageStr + "\n";
if (tex->getDepth() > 1)
str += "#00aa00depth: #000000" + TOSTRING(tex->getDepth()) + "\n";
mTxt->setCaption(convertToMyGUIString(str));
mImage->setImageTexture(texName);
mBtnSavePNG->setEnabled(true);
}
catch (Exception& e)
{
UTFString str = "Exception while opening texture:" + e.getFullDescription();
RoR::App::GetConsole()->putMessage(Console::CONSOLE_MSGTYPE_INFO, Console::CONSOLE_MSGTYPE_INFO, str, "error.png");
}
}
示例4: WriteToTexture
void WriteToTexture(const String &str, TexturePtr destTexture, Image::Box destRectangle, Font* font, const ColourValue &color, char justify, bool wordwrap)
{
using namespace Ogre;
if (destTexture->getHeight() < destRectangle.bottom)
destRectangle.bottom = destTexture->getHeight();
if (destTexture->getWidth() < destRectangle.right)
destRectangle.right = destTexture->getWidth();
if (!font->isLoaded())
font->load();
TexturePtr fontTexture = (TexturePtr) TextureManager::getSingleton().getByName(font->getMaterial()->getTechnique(0)->getPass(0)->getTextureUnitState(0)->getTextureName());
HardwarePixelBufferSharedPtr fontBuffer = fontTexture->getBuffer();
HardwarePixelBufferSharedPtr destBuffer = destTexture->getBuffer();
PixelBox destPb = destBuffer->lock(destRectangle,HardwareBuffer::HBL_NORMAL);
// The font texture buffer was created write only...so we cannot read it back :o). One solution is to copy the buffer instead of locking it. (Maybe there is a way to create a font texture which is not write_only ?)
// create a buffer
size_t nBuffSize = fontBuffer->getSizeInBytes();
unsigned char* buffer = (unsigned char*)calloc(nBuffSize, sizeof(unsigned char));
// create pixel box using the copy of the buffer
PixelBox fontPb(fontBuffer->getWidth(), fontBuffer->getHeight(),fontBuffer->getDepth(), fontBuffer->getFormat(), buffer);
fontBuffer->blitToMemory(fontPb);
unsigned char* fontData = static_cast<unsigned char*>( fontPb.data );
unsigned char* destData = static_cast<unsigned char*>( destPb.data );
const size_t fontPixelSize = PixelUtil::getNumElemBytes(fontPb.format);
const size_t destPixelSize = PixelUtil::getNumElemBytes(destPb.format);
const size_t fontRowPitchBytes = fontPb.rowPitch * fontPixelSize;
const size_t destRowPitchBytes = destPb.rowPitch * destPixelSize;
Box *GlyphTexCoords;
GlyphTexCoords = new Box[str.size()];
Font::UVRect glypheTexRect;
size_t charheight = 0;
size_t charwidth = 0;
for (unsigned int i = 0; i < str.size(); i++)
{
if ((str[i] != '\t') && (str[i] != '\n') && (str[i] != ' '))
{
glypheTexRect = font->getGlyphTexCoords(str[i]);
GlyphTexCoords[i].left = glypheTexRect.left * fontTexture->getSrcWidth();
GlyphTexCoords[i].top = glypheTexRect.top * fontTexture->getSrcHeight();
GlyphTexCoords[i].right = glypheTexRect.right * fontTexture->getSrcWidth();
GlyphTexCoords[i].bottom = glypheTexRect.bottom * fontTexture->getSrcHeight();
if (GlyphTexCoords[i].getHeight() > charheight)
charheight = GlyphTexCoords[i].getHeight();
if (GlyphTexCoords[i].getWidth() > charwidth)
charwidth = GlyphTexCoords[i].getWidth();
}
}
size_t cursorX = 0;
size_t cursorY = 0;
size_t lineend = destRectangle.getWidth();
bool carriagreturn = true;
for (unsigned int strindex = 0; strindex < str.size(); strindex++)
{
switch(str[strindex])
{
case ' ':
cursorX += charwidth;
break;
case '\t':
cursorX += charwidth * 3;
break;
case '\n':
cursorY += charheight;
carriagreturn = true;
break;
default:
{
//wrapping
if ((cursorX + GlyphTexCoords[strindex].getWidth()> lineend) && !carriagreturn )
{
cursorY += charheight;
carriagreturn = true;
}
//justify
if (carriagreturn)
{
size_t l = strindex;
size_t textwidth = 0;
size_t wordwidth = 0;
while( (l < str.size() ) && (str[l] != '\n'))
{
wordwidth = 0;
//.........这里部分代码省略.........