本文整理汇总了C++中StelPainter::enableTexture2d方法的典型用法代码示例。如果您正苦于以下问题:C++ StelPainter::enableTexture2d方法的具体用法?C++ StelPainter::enableTexture2d怎么用?C++ StelPainter::enableTexture2d使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StelPainter
的用法示例。
在下文中一共展示了StelPainter::enableTexture2d方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: drawLines
// Draw constellations lines
void ConstellationMgr::drawLines(StelPainter& sPainter, const StelCore* core) const
{
sPainter.enableTexture2d(false);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
if (constellationLineThickness>1.f)
glLineWidth(constellationLineThickness); // set line thickness
// OpenGL ES 2.0 doesn't have GL_LINE_SMOOTH. But it looks much better.
#ifdef GL_LINE_SMOOTH
if (QOpenGLContext::currentContext()->format().renderableType()==QSurfaceFormat::OpenGL)
glEnable(GL_LINE_SMOOTH);
#endif
const SphericalCap& viewportHalfspace = sPainter.getProjector()->getBoundingCap();
vector < Constellation * >::const_iterator iter;
for (iter = asterisms.begin(); iter != asterisms.end(); ++iter)
{
(*iter)->drawOptim(sPainter, core, viewportHalfspace);
}
if (constellationLineThickness>1.f)
glLineWidth(1.f); // restore line thickness
// OpenGL ES 2.0 doesn't have GL_LINE_SMOOTH. But it looks much better.
#ifdef GL_LINE_SMOOTH
if (QOpenGLContext::currentContext()->format().renderableType()==QSurfaceFormat::OpenGL)
glDisable(GL_LINE_SMOOTH);
#endif
}
示例2: drawPointer
void NebulaMgr::drawPointer(const StelCore* core, StelPainter& sPainter)
{
const StelProjectorP prj = core->getProjection(StelCore::FrameJ2000);
const QList<StelObjectP> newSelected = GETSTELMODULE(StelObjectMgr)->getSelectedObject("Nebula");
if (!newSelected.empty())
{
const StelObjectP obj = newSelected[0];
Vec3d pos=obj->getJ2000EquatorialPos(core);
// Compute 2D pos and return if outside screen
if (!prj->projectInPlace(pos)) return;
if (StelApp::getInstance().getVisionModeNight())
sPainter.setColor(0.8f,0.0f,0.0f);
else
sPainter.setColor(0.4f,0.5f,0.8f);
texPointer->bind();
sPainter.enableTexture2d(true);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Normal transparency mode
// Size on screen
float size = obj->getAngularSize(core)*M_PI/180.*prj->getPixelPerRadAtCenter();
size+=20.f + 10.f*std::sin(2.f * StelApp::getInstance().getTotalRunTime());
sPainter.drawSprite2dMode(pos[0]-size/2, pos[1]-size/2, 10, 90);
sPainter.drawSprite2dMode(pos[0]-size/2, pos[1]+size/2, 10, 0);
sPainter.drawSprite2dMode(pos[0]+size/2, pos[1]+size/2, 10, -90);
sPainter.drawSprite2dMode(pos[0]+size/2, pos[1]-size/2, 10, -180);
}
}
示例3: drawPointer
void StarMgr::drawPointer(StelPainter& sPainter, const StelCore* core)
{
const QList<StelObjectP> newSelected = objectMgr->getSelectedObject("Star");
if (!newSelected.empty())
{
const StelObjectP obj = newSelected[0];
Vec3d pos=obj->getJ2000EquatorialPos(core);
Vec3d screenpos;
// Compute 2D pos and return if outside screen
if (!sPainter.getProjector()->project(pos, screenpos))
return;
Vec3f c(obj->getInfoColor());
if (StelApp::getInstance().getVisionModeNight())
c = StelUtils::getNightColor(c);
sPainter.setColor(c[0], c[1], c[2]);
texPointer->bind();
sPainter.enableTexture2d(true);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Normal transparency mode
sPainter.drawSprite2dMode(screenpos[0], screenpos[1], 13.f, StelApp::getInstance().getTotalRunTime()*40.);
}
}
示例4: drawBoundaries
void ConstellationMgr::drawBoundaries(StelPainter& sPainter) const
{
sPainter.enableTexture2d(false);
glDisable(GL_BLEND);
vector < Constellation * >::const_iterator iter;
for (iter = asterisms.begin(); iter != asterisms.end(); ++iter)
{
(*iter)->drawBoundaryOptim(sPainter);
}
}
示例5: drawArt
// Draw the art texture
void Constellation::drawArt(StelPainter& sPainter) const
{
glBlendFunc(GL_ONE, GL_ONE);
sPainter.enableTexture2d(true);
glEnable(GL_BLEND);
glEnable(GL_CULL_FACE);
SphericalRegionP region = sPainter.getProjector()->getViewportConvexPolygon();
drawArtOptim(sPainter, *region);
glDisable(GL_CULL_FACE);
}
示例6: drawLines
// Draw constellations lines
void ConstellationMgr::drawLines(StelPainter& sPainter, const StelCore* core) const
{
sPainter.enableTexture2d(false);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
const SphericalCap& viewportHalfspace = sPainter.getProjector()->getBoundingCap();
vector < Constellation * >::const_iterator iter;
for (iter = asterisms.begin(); iter != asterisms.end(); ++iter)
{
(*iter)->drawOptim(sPainter, core, viewportHalfspace);
}
}
示例7: drawNames
// Draw the names of all the constellations
void ConstellationMgr::drawNames(StelPainter& sPainter) const
{
glEnable(GL_BLEND);
sPainter.enableTexture2d(true);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
vector < Constellation * >::const_iterator iter;
for (iter = asterisms.begin(); iter != asterisms.end(); iter++)
{
// Check if in the field of view
if (sPainter.getProjector()->projectCheck((*iter)->XYZname, (*iter)->XYname))
(*iter)->drawName(sPainter);
}
}
示例8: drawArt
// Draw constellations art textures
void ConstellationMgr::drawArt(StelPainter& sPainter) const
{
glBlendFunc(GL_ONE, GL_ONE);
sPainter.enableTexture2d(true);
glEnable(GL_BLEND);
glEnable(GL_CULL_FACE);
vector < Constellation * >::const_iterator iter;
SphericalRegionP region = sPainter.getProjector()->getViewportConvexPolygon();
for (iter = asterisms.begin(); iter != asterisms.end(); ++iter)
{
(*iter)->drawArtOptim(sPainter, *region);
}
glDisable(GL_CULL_FACE);
}
示例9: drawBoundaries
void ConstellationMgr::drawBoundaries(StelPainter& sPainter) const
{
sPainter.enableTexture2d(false);
glDisable(GL_BLEND);
#ifndef USE_OPENGL_ES2
glLineStipple(2, 0x3333);
glEnable(GL_LINE_STIPPLE);
#endif
vector < Constellation * >::const_iterator iter;
for (iter = asterisms.begin(); iter != asterisms.end(); ++iter)
{
(*iter)->drawBoundaryOptim(sPainter);
}
#ifndef USE_OPENGL_ES2
glDisable(GL_LINE_STIPPLE);
#endif
}
示例10: drawPointer
void Novae::drawPointer(StelCore* core, StelPainter &painter)
{
const QList<StelObjectP> newSelected = GETSTELMODULE(StelObjectMgr)->getSelectedObject("Nova");
if (!newSelected.empty())
{
const StelObjectP obj = newSelected[0];
Vec3d pos=obj->getJ2000EquatorialPos(core);
Vec3d screenpos;
// Compute 2D pos and return if outside screen
if (!painter.getProjector()->project(pos, screenpos))
return;
const Vec3f& c(obj->getInfoColor());
painter.setColor(c[0],c[1],c[2]);
texPointer->bind();
painter.enableTexture2d(true);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Normal transparency mode
painter.drawSprite2dMode(screenpos[0], screenpos[1], 13.f, StelApp::getInstance().getTotalRunTime()*40.);
}
}
示例11: drawBoundaryOptim
void Constellation::drawBoundaryOptim(StelPainter& sPainter) const
{
if (!boundaryFader.getInterstate())
return;
sPainter.enableTexture2d(false);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Normal transparency mode
sPainter.setColor(boundaryColor[0], boundaryColor[1], boundaryColor[2], boundaryFader.getInterstate());
unsigned int i, j;
size_t size;
Vec3f pt1, pt2;
Vec3d ptd1, ptd2;
std::vector<Vec3f> *points;
if (singleSelected) size = isolatedBoundarySegments.size();
else size = sharedBoundarySegments.size();
const SphericalCap& viewportHalfspace = sPainter.getProjector()->getBoundingCap();
for (i=0;i<size;i++)
{
if (singleSelected) points = isolatedBoundarySegments[i];
else points = sharedBoundarySegments[i];
for (j=0;j<points->size()-1;j++)
{
pt1 = points->at(j);
pt2 = points->at(j+1);
if (pt1*pt2>0.9999999f)
continue;
ptd1.set(pt1[0], pt1[1], pt1[2]);
ptd2.set(pt2[0], pt2[1], pt2[2]);
sPainter.drawGreatCircleArc(ptd1, ptd2, &viewportHalfspace);
}
}
}
示例12: draw
bool SkyLabel::draw(StelCore* core, StelPainter& sPainter)
{
if(labelFader.getInterstate() <= 0.0)
return false;
Vec3d objectPos = labelObject->getJ2000EquatorialPos(core);
Vec3d labelXY;
sPainter.getProjector()->project(objectPos,labelXY);
sPainter.setFont(labelFont);
double xOffset(0.);
double yOffset(0.);
char hJustify = 'c';
char vJustify = 'c';
if (labelSide.toUpper().contains("N"))
{
yOffset = 1.0;
vJustify = 'b'; // bottom justify text
}
else if (labelSide.toUpper().contains("S"))
{
yOffset = -1.0;
vJustify = 't'; // top justufy text
}
if (labelSide.toUpper().contains("E"))
{
xOffset = 1.0;
hJustify = 'l'; // right justify text
}
else if (labelSide.toUpper().contains("W"))
{
xOffset = -1.0;
hJustify = 'r'; // left justify text
}
if (labelDistance >= 0.0)
{
xOffset *= labelDistance;
yOffset *= labelDistance;
}
else
{
float shift = 4.f + labelObject->getAngularSize(core)*M_PI/180.*sPainter.getProjector()->getPixelPerRadAtCenter()/1.8f;
// use the object size
xOffset *= shift;
yOffset *= shift;
}
double jxOffset(0.);
double jyOffset(0.);
if (hJustify == 'r')
jxOffset = sPainter.getFontMetrics().width(labelText);
else if (hJustify == 'c')
jxOffset = sPainter.getFontMetrics().width(labelText) / 2.;
if (vJustify == 't')
jyOffset = sPainter.getFontMetrics().height();
else if (vJustify == 'c')
jyOffset = sPainter.getFontMetrics().height() / 2.;
sPainter.setColor(labelColor[0], labelColor[1], labelColor[2], labelFader.getInterstate());
sPainter.drawText(labelXY[0]+xOffset-jxOffset, labelXY[1]+yOffset-jyOffset, labelText, 0, 0, 0, false);
if (labelStyle == SkyLabel::Line)
{
sPainter.enableTexture2d(false);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// screen coordinates of object
Vec3d objXY;
sPainter.getProjector()->project(objectPos,objXY);
double lineEndX = labelXY[0]+xOffset;
double lineEndY = labelXY[1]+yOffset;
if (vJustify == 'b')
lineEndY -= 5;
else if (vJustify == 't')
lineEndY += 5;
if (hJustify == 'l')
lineEndX -= 5;
else if (hJustify == 'r')
lineEndX += 5;
sPainter.setColor(labelColor[0], labelColor[1], labelColor[2], labelFader.getInterstate());
sPainter.drawLine2d(lineEndX,lineEndY,objXY[0], objXY[1]);
}
return true;
}