1

我正在使用 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)。即使我手动尝试摆弄数字也没有什么区别。

4

1 回答 1

0

尝试这样的事情:

glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho( 0, windowWidth, 0, windowHeight, -1, 1 );

glMatrixMode( GL_MODELVIEW );
glLoadIdentity();

glRasterPos( ... );
glDrawPixels( ... );

或使用glWindowPos().

于 2013-03-11T19:15:21.793 回答