我正在使用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();
}
答案 0 :(得分:0)
使用glTranslate。还有很多其他方法,但这是最简单的方法。如果您不熟悉OpenGL,请查看一些教程,它可以提供帮助。
答案 1 :(得分:0)
首先要注意的是,OpenGL不是场景图。它是一个绘图API,非常像Windows GDI。函数glDrawPixels
与MemDC中的BitBlt不是很相似。
无论如何:你不应该使用glDrawPixels。它很慢并且已经弃用了。在OpenGL中绘制图像的方法是将图像上传到纹理并绘制纹理四边形。您可以根据自己的喜好自由移动四边形。