我正在使用SharpGL(OpenGL,WPF应用程序)在屏幕上绘制PNG。我打开文件,读取字节,然后使用以下代码绘制图像:
SharpGL.OpenGL gl = args.OpenGL;
//gl.GetFloat(SharpGL.Enumerations.GetTarget.CurrentRasterPosition, data);
//gl.RasterPos(0, 0, 0, 1);
gl.DrawPixels(m_bitmapImage.PixelWidth, m_bitmapImage.PixelHeight, SharpGL.OpenGL.GL_BGRA, m_pixels);
我想在屏幕上移动图像,所以我的理解是,如果我更改光栅位置,它将移动图像绘制的起点。如果我以任何方式更改光栅位置的值,我的图像最终会消失。我尝试获取当前栅格位置并将其直接导入RasterPos
函数,然后尝试再次读出值,它从0, 0, 0, 1
更改为258.5, 161.5, .5, 1
(屏幕宽度的一半) ,我的屏幕高度的一半,不知道.5来自哪里,1)。即使我手动试图摆弄数字也没有什么区别。
答案 0 :(得分:0)
尝试这样的事情:
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0, windowWidth, 0, windowHeight, -1, 1 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glRasterPos( ... );
glDrawPixels( ... );
或使用glWindowPos()
。