本文整理汇总了C++中QOpenGLFunctions_2_1::glVertex2f方法的典型用法代码示例。如果您正苦于以下问题:C++ QOpenGLFunctions_2_1::glVertex2f方法的具体用法?C++ QOpenGLFunctions_2_1::glVertex2f怎么用?C++ QOpenGLFunctions_2_1::glVertex2f使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QOpenGLFunctions_2_1
的用法示例。
在下文中一共展示了QOpenGLFunctions_2_1::glVertex2f方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: draw
//override draw function
void ccMouseCircle::draw(CC_DRAW_CONTEXT& context)
{
//only draw when visible
if (!ccMouseCircle::isVisible())
return;
//only draw in 2D foreground mode
if (!MACRO_Foreground(context) || !MACRO_Draw2D(context))
return;
//get the set of OpenGL functions (version 2.1)
QOpenGLFunctions_2_1 *glFunc = context.glFunctions<QOpenGLFunctions_2_1>();
assert(glFunc != nullptr);
if (glFunc == nullptr)
return;
//test viewport parameters
const ccViewportParameters& params = context.display->getViewportParameters();
glFunc->glPushAttrib(GL_LINE_BIT);
float relativeZoom = 1.0f;
float dx = 0.0f;
float dy = 0.0f;
if (!m_params.perspectiveView) //ortho mode
{
//Screen pan & pivot compensation
float totalZoom = m_params.zoom / m_params.pixelSize;
m_winTotalZoom = params.zoom / params.pixelSize;
relativeZoom = m_winTotalZoom / totalZoom;
CCVector3d dC = m_params.cameraCenter - params.cameraCenter;
CCVector3d P = m_params.pivotPoint - params.pivotPoint;
m_params.viewMat.apply(P);
static_cast<float>(dC.x + P.x);
static_cast<float>(dC.y + P.y);
dx *= m_winTotalZoom;
dy *= m_winTotalZoom;
}
//thick dotted line
glFunc->glLineWidth(2);
glFunc->glLineStipple(1, 0xAAAA);
glFunc->glEnable(GL_LINE_STIPPLE);
const unsigned char* defaultColor = m_selected ? ccColor::red.rgba : context.textDefaultCol.rgb;
glFunc->glColor3ubv(ccColor::red.rgba);
//get height & width
int halfW = static_cast<int>(context.glW / 2.0f);
int halfH = static_cast<int>(context.glH / 2.0f);
//get mouse position
QPoint p = m_owner->asWidget()->mapFromGlobal(QCursor::pos());
int mx = p.x(); //mouse x-coord
int my = 2*halfH - p.y(); //mouse y-coord in OpenGL coordinates (origin at bottom left, not top left)
//calculate circle location
int cx = dx+mx-halfW;
int cy = dy+my-halfH;
//draw circle
glFunc->glBegin(GL_LINE_LOOP);
for (int n = 0; n < ccMouseCircle::RESOLUTION; n++)
{
glFunc->glVertex2f(ccMouseCircle::UNIT_CIRCLE[n][0] * ccMouseCircle::RADIUS + cx, ccMouseCircle::UNIT_CIRCLE[n][1] * ccMouseCircle::RADIUS + cy);
}
glFunc->glEnd();
glFunc->glPopAttrib();
}
示例2: title
void cc2DViewportLabel::drawMeOnly(CC_DRAW_CONTEXT& context)
{
//2D foreground only
if (!MACRO_Foreground(context) || !MACRO_Draw2D(context))
return;
//get the set of OpenGL functions (version 2.1)
QOpenGLFunctions_2_1 *glFunc = context.glFunctions<QOpenGLFunctions_2_1>();
assert( glFunc != nullptr );
if ( glFunc == nullptr )
return;
//test viewport parameters
const ccViewportParameters& params = context.display->getViewportParameters();
//general parameters
if ( params.perspectiveView != m_params.perspectiveView
|| params.objectCenteredView != m_params.objectCenteredView
|| params.pixelSize != m_params.pixelSize)
{
return;
}
//test base view matrix
for (unsigned i = 0; i < 12; ++i)
if (fabs(params.viewMat.data()[i] - m_params.viewMat.data()[i]) > ZERO_TOLERANCE)
return;
if (m_params.perspectiveView)
{
if (params.fov != m_params.fov || params.perspectiveAspectRatio != m_params.perspectiveAspectRatio)
return;
if ((params.pivotPoint - m_params.pivotPoint).norm() > ZERO_TOLERANCE
|| (params.cameraCenter - m_params.cameraCenter).norm() > ZERO_TOLERANCE)
return;
}
else
{
if (params.orthoAspectRatio != m_params.orthoAspectRatio)
return;
}
glFunc->glPushAttrib(GL_LINE_BIT);
float relativeZoom = 1.0f;
float dx = 0, dy = 0;
if (!m_params.perspectiveView) //ortho mode
{
//Screen pan & pivot compensation
float totalZoom = m_params.zoom / m_params.pixelSize;
float winTotalZoom = params.zoom / params.pixelSize;
relativeZoom = winTotalZoom / totalZoom;
CCVector3d dC = m_params.cameraCenter - params.cameraCenter;
CCVector3d P = m_params.pivotPoint - params.pivotPoint;
m_params.viewMat.apply(P);
dx = static_cast<float>(dC.x + P.x);
dy = static_cast<float>(dC.y + P.y);
dx *= winTotalZoom;
dy *= winTotalZoom;
}
//thick dotted line
glFunc->glLineWidth(2);
glFunc->glLineStipple(1, 0xAAAA);
glFunc->glEnable(GL_LINE_STIPPLE);
const unsigned char* defaultColor = m_selected ? ccColor::red.rgba : context.textDefaultCol.rgb;
glFunc->glColor3ubv(defaultColor);
glFunc->glBegin(GL_LINE_LOOP);
glFunc->glVertex2f(dx + m_roi[0] * relativeZoom, dy + m_roi[1] * relativeZoom);
glFunc->glVertex2f(dx + m_roi[2] * relativeZoom, dy + m_roi[1] * relativeZoom);
glFunc->glVertex2f(dx + m_roi[2] * relativeZoom, dy + m_roi[3] * relativeZoom);
glFunc->glVertex2f(dx + m_roi[0] * relativeZoom, dy + m_roi[3] * relativeZoom);
glFunc->glEnd();
glFunc->glPopAttrib();
//title
QString title(getName());
if (!title.isEmpty())
{
QFont titleFont(context.display->getTextDisplayFont()); //takes rendering zoom into account!
titleFont.setBold(true);
QFontMetrics titleFontMetrics(titleFont);
int titleHeight = titleFontMetrics.height();
int xStart = (int)(dx + 0.5f*(float)context.glW + std::min<float>(m_roi[0], m_roi[2])*relativeZoom);
int yStart = (int)(dy + 0.5f*(float)context.glH + std::min<float>(m_roi[1], m_roi[3])*relativeZoom);
context.display->displayText(title, xStart, yStart - 5 - titleHeight, ccGenericGLDisplay::ALIGN_DEFAULT, 0, defaultColor, &titleFont);
}
}