2012-07-03 4 views
0

Я использую openGL для перетаскивания изображения (загруженного растрового изображения) и задаюсь вопросом, есть ли какие-то методы/функции для преобразования изображения на экран., чтобы перетащить изображение opengl (MFC)

до сих пор я сделал этот код для загрузки изображения:

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(); 
} 

ответ

0

Использование glTranslate. Есть много других способов, но это самое простое. Ознакомьтесь с некоторыми учебниками, если вы новичок в OpenGL, это может помочь.

+0

Да, это мой первый раз изучать OpenGL. Я найду glTranslate Func. Дайте мне знать, знаете ли вы образцы. Спасибо за ваш ответ. –

+0

[Учебники NeHe] (http://nehe.gamedev.net) охватывают широкий круг тем. – rockeye

+0

glTranslate не работает непосредственно на glDrawPixels. glDrawPixels извлекает из позиции, заданной glRasterPos, которая транслируется по матричному стекю, но имеет несколько побочных эффектов. Например, если точка, заданная glRasterPos, находится за окном после преобразования, растровые операции, такие как glDrawPixels, не будут рисоваться. * Вы не должны использовать glDrawPixels в любом случае! * – datenwolf

0

Первое, что вы должны понимать, это то, что OpenGL не является графом сцены. Это API-интерфейс рисования, очень похожий на Windows GDI. Функция glDrawPixels не очень отличается от BitBlt от MemDC.

В любом случае: вы не должны использовать glDrawPixels. Это медленно и устарело. Способ рисования изображений в OpenGL - это загрузка изображения в текстуру и рисование текстурного квадрата. Квадрат вы можете свободно перемещаться по своему усмотрению.

+0

hmm .. Значит, вы имеете в виду, что загружаете изображение в AUX_RGBImageRec, а затем делаете квадрат и рисуете изображение в квадрате. Правильно ли это? Есть ли образцы? –

Смежные вопросы