通过opengl(MFC)拖动图像

时间:2012-07-03 07:21:29

标签: c++ windows opengl mfc

我正在使用openGL来拖动图像(加载位图)并想知道是否有一些方法/函数来转换屏幕上的图像。

到目前为止,我已经完成了加载图片的代码:

void CDisplayControlPanelView::OnDraw(CDC* /*pDC*/)
{
    CDisplayControlPanelDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if(!pDoc)
        return;

    wglMakeCurrent(m_hDC , m_hRC);
    RenderScene();
    SwapBuffers(m_hDC);
    wglMakeCurrent(m_hDC,NULL);
}

void CDisplayControlPanelView::RenderScene()
{
    AUX_RGBImageRec* pRGBImage;

    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    glClearColor(0.0, 0.0, 0.0, 0.0);

    glClear(GL_COLOR_BUFFER_BIT);
    pRGBImage = auxDIBImageLoadA("D:\\map.bmp");

    glDrawPixels(pRGBImage->sizeX, pRGBImage->sizeY, GL_RGB, GL_UNSIGNED_BYTE, pRGBImage->data);
    glFlush();
}

2 个答案:

答案 0 :(得分:0)

使用glTranslate。还有很多其他方法,但这是最简单的方法。如果您不熟悉OpenGL,请查看一些教程,它可以提供帮助。

答案 1 :(得分:0)

首先要注意的是,OpenGL不是场景图。它是一个绘图API,非常像Windows GDI。函数glDrawPixels与MemDC中的BitBlt不是很相似。

无论如何:你不应该使用glDrawPixels。它很慢并且已经弃用了。在OpenGL中绘制图像的方法是将图像上传到纹理并绘制纹理四边形。您可以根据自己的喜好自由移动四边形。