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

glTranslateを使用します。他にもたくさんの方法がありますが、これが最も簡単です。OpenGL を初めて使用する場合は、いくつかのチュートリアルを確認してください。

于 2012-07-03T07:28:15.593 に答える
0

最初に理解しなければならないことは、OpenGL はシーン グラフではないということです。これは、Windows GDI に非常によく似た描画 API です。この関数glDrawPixelsは、MemDC の BitBlt とあまり変わりません。

とにかく: glDrawPixels を使用しないでください。それは遅く、非推奨です。OpenGL で画像を描画する方法は、画像をテクスチャにアップロードし、テクスチャ化されたクワッドを描画することです。好きなように自由に移動できるクワッド。

于 2012-07-03T11:23:38.903 に答える