设置栅格pos不会改变OpenGL中DrawPixels的任何内容

时间:2013-03-11 18:49:24

标签: c# wpf opengl

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

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

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

glMatrixMode( GL_MODELVIEW );
glLoadIdentity();

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

或使用glWindowPos()