0

我正在使用 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();
}
4

2 回答 2

0

Use glTranslate. There are many other ways but this is the most simple. Check out some tutorials if you are new to OpenGL, it could help.

于 2012-07-03T07:28:15.593 回答
0

您必须了解的第一件事是,OpenGL 不是场景图。它是一个绘图 API,非常类似于 Windows GDI。该函数glDrawPixels与 MemDC 中的 BitBlt 并无太大区别。

无论如何:你不应该使用 glDrawPixels。它很慢且已被弃用。在 OpenGL 中绘制图像的方法是将图像上传到纹理中并绘制带纹理的四边形。您可以随意移动的四边形。

于 2012-07-03T11:23:38.903 回答